The American hit back to take the next two sets, recovering from 0-40 down to serve out the match and make her first appearance in the final for eight years.
The first five games went with serve until the Czech edged ahead by instigating a run of four straight breaks of serve as Wozniacki staved off three set points in the 10th game stay alive in the set and eventually forced a tiebreak.
After dominating the tie-break to take the opening set, Garcia was outplayed by Australian Open and Wimbledon finalist Williams, converting just one of her 13 break points.
The reward for her victory over Wozniacki, hot on the heels of another come-from-behind triumph over Elina Svitolina, is a semi-final against an evergreen Venus Williams on Saturday, a match the Frenchwoman is relishing. "With this experience of the WTA Finals, I feel like I have so much more things to keep working on". "I was playing very flat, and she didn't have any issue with it", Garcia told reporters of the first set against the Danish former world number one.
"Every time I thought I had her, she would play fantastic shots... but it's never over until the fat lady sings and I'm not fat", joked Williams, who won the tournament in 2008.
"All of a sudden it's 6-2, 6-3, 6-4, and I said this isn't fun anymore", Wozniacki said.
Garcia had claimed the final spot in the season finale after winning successive WTA titles at the Wuhan and China Open, but her impressive form was ended by 2008 champion Williams.More news: Winx storms to historic third consecutive Cox Plate win
More news: Guardiola eager for Phil Foden return following England U17's heroics
More news: How does California fit into the opioid crisis?
Garcia called it a "very difficult" match. Finally, she started to make a couple of mistakes and I kept the intensity up, kept trying to find a way. French girl had a chance to pull the break back in game 7 but Venus saved a break point to stay in the lead, and she closed the set with another break in game 8, which turned out to be the longest of the match.
The world number six prevailed in a roller-coaster match 7-6 (9), 6-3 in one hour and 57 minutes to reach the decider of the WTA Finals for the first time since 2010.
"At this level, I think we've both improved our game.
I learned a lot", the 24-year-old said.
The Romanian was presented with a trophy and a ring on Sunday to commemorate her achievement, and says the main goal for next year is to win a grand slam.
"I started thinking I should have lost this set already, so actually this is just a bonus". I just want to work harder to get better, because I need to do that, and we will see what is going to happen.
"I think it's been an awesome journey and unbelievable career that I can be proud of", the 37-year-old Hingis said. The set was then brought into a tiebreak to decide its victor, but Williams had a very poor start as she threw in two double-faults on her first service points.