Williams, 37, came from a set down to triumph 6-7 (7/3), 6-2, 6-3 in two hours and 29 minutes at the Singapore Indoor Stadium. She will be aiming to end a nine-year WTA Finals title drought when she plays Wozniacki on Sunday.
Garcia, playing in her WTA Finals debut, looked gassed at times, having played a two hour and 19 minute marathon against Wozniacki on Friday.
Williams claimed the decisive break in the eighth game of the third set before her clutch serving saw her overcame three break points and claim a memorable victory.
Williams said she was able to come to terms with Garcia, an opponent she hadn’t played since 2014. “I think in the second and third (sets) I was able to figure it out a little more,” she told reporters after the match. “I haven’t played her in a long time. She’s improved her game so much.”
The American has a commanding 10-1 record over Wozniacki but they haven’t clashed for three years. “I haven’t played her in ages,” Williams said. “I have to gauge how it goes and try to figure out the solution.”
Garcia admitted she battled fatigue as the match wore on. “I was missing a little bit of energy in the second and third set,” she said. “It was very intense this match. The match from yesterday was very difficult physically and mentally.”
— Marion bartoli (@bartoli_marion) October 28, 2017
Williams looked in grave trouble when she faced two break points in the first game of the second set but she fought back to hold serve and then broke Garcia in the next game.
Williams’ trademark serve and her powerful groundstrokes started dictating, as she stormed through the second set in just 41 minutes.
The seven-time grand slam winner will be the oldest finalist in WTA Finals history when she plays Wozniacki. Even though she had a stellar season reaching two grand slam finals, the world number five will be seeking her first title of the year.
Earlier, a tireless Wozniacki stormed into the final with a straight sets victory over Karolina Pliskova, ending the Czech’s dreams of finishing world number one.
The world number six prevailed in a rollercoaster match 7-6 (11/9), 6-3 in one hour and 57 minutes to reach the decider of the WTA Finals for the first time since 2010.
Wozniacki said she kept “fighting” through a marathon 82-minute first set, where she held off three set points in the 10th game and almost blew a 6-1 lead in the tieback.
“It went back and forth,” she told reporters after the match.
“It was very important to win the first set. I think that broke her a little bit. I think it was important for both of us to get that first one.”
Finals day OOP:
Bertens / Larsson vs Hlavackova / Babos
Wozniacki vs Williams
— WTA Finals Singapore (@WTAFinalsSG) October 28, 2017
Pliskova said she would not stew over missing out on the top ranking. “I’m absolutely fine with that,” she said. “This is the last thing that I’m thinking about now.”
Wozniacki seemingly had a stranglehold of the match with an early break in the second set only for Pliskova to storm back.
But she had a decisive break in the eighth game and then served it out to book her spot in the final.
Pliskova needed to lift the trophy on Sunday to overtake world number one Simona Halep in the rankings.
Even though she didn’t make the semis, Halep has now secured the year-end world number one ranking.
Roger Federer made it through to the semi-finals of the Swiss Indoors on Friday night after a gutsy 4-6, 6-1, 6-3 comeback victory against Adrian Mannarino in front of his home crowd.
The Swiss top seed will face either David Goffin or Jack Sock in the last four.
— Tennis TV (@TennisTV) October 27, 2017
Svitolina, the world number four, was already eliminated after losing her first two matches but she took Halep down with her as she won 6-3, 6-4 in 71 minutes.
Halep needed victory to keep her campaign alive but the Romanian struggled to click into gear against a relaxed Svitolina at the Singapore Indoor Stadium.
It means Garcia, the lowest-ranked player in the draw, tops Red Group and will play Venus Williams on Saturday, while Caroline Wozniacki will face Karolina Pliskova in the other semi-final.
Svitolina went for her shots and dictated from the back of the court, rattling a shaky Halep, who had suffered a big loss to Wozniacki in her previous match.
“I played free it was a good match for me and I am very happy to finish in Singapore with the win,” the Ukrainian said.
Svitolina dictated from the start, breaking Halep’s tentative serve straight away and winning the opening three games before claiming the first set in 31 minutes.
Halep fought back in the second set with an early break but she was broken straight back and her head dropped when Svitolina claimed what turned out to be the decisive break in game seven.
Even though she endured disappointment in Singapore, Halep will finish the year as world number one if Pliskova does not lift the trophy on Sunday.
— WTA (@WTA) October 27, 2017
Earlier Garcia, the world number eight, admitted it felt surreal even to be in the tournament after her thrilling 0-6, 6-3, 7-5 victory over Denmark’s Wozniacki.
Garcia, who won her last two tournaments to reach the Finals, was two points from elimination in the 10th game of the third set but she dug deep to hand Wozniacki her first defeat of the competition.
Even so, Garcia had to endure a nervy wait until Svitolina beat Halep to send her into the last four. The Frenchwoman lost to Halep but then beat Svitolina in her earlier matches.
“It was kind of weird, actually, to be here. I mean, I qualified last minute, two weeks before. I wanted to keep improving like I did. That’s why I think I won these two matches,” Garcia said.
Wozniacki, who has been in sensational form in Singapore, described her first loss as “annoying”.
“I feel like I should have won that match, but it is what it is,” she said. “I had the chance to serve it out and I didn’t. That’s really it.”
Wozniacki seemed headed for a third straight victory after dominating in the early stages through controlled aggression off the baseline, precise counter-punching and clutch serving.
The 27-year-old had just one unforced error in an almost flawless first set lasting just 22 minutes.
But the match took an unexpected turn in the second set when Wozniacki had a time violation and argued with the umpire during the third game.
Garcia capitalised and won four straight games en route to levelling the match, before outlasting Wozniacki in a tense third set to register her first win in their three career meetings.