The two-time defending champion started poorly but after her racquet paid the price, she dominated the second set and emerged victorious from a tense deciding tie-breaker to win it 2-6, 6-3, 7-6 (8/6).
The 18-time Grand Slam-winner will take on either Simona Halep or Agnieszka Radwanska, who play later, as she seeks the first hat-trick of titles at the season finale since Monica Seles in 1992.
Williams’ fourth win over Wozniacki this year, including the US Open final, was hard-fought and it was the third time this season that she has been pushed to three sets by the resurgent Dane.
“Caroline played a great match, it was really difficult today. I felt really bad because she’s so amazing and she’s so nice,” Williams said.
“She’s the only one who hasn’t lost in this tournament and she really deserved to win.”
The players are close and they sang along to “We Belong Together” at a Mariah Carey concert late on Friday, but friendship was put on one side as a grim-faced Williams strode into Singapore’s Indoor Stadium.
However, the American was broken in her first service game and despite finding her range with her serve, in the rallies she struggled with Wozniacki’s placement and court craft.
The pressure exploded when Williams furiously pummelled her racquet into the floor after losing the seventh game to love to go 2-5 down, earning her a warning from the chair umpire.
The reigning champion was broken again as Wozniacki took the first set 6-2, but Williams returned fired up and she shrieked and bellowed her way to a love hold at the start of the second.
And the tables turned in her favour when she got a break for 3-2 in the second, her first lead of the match, and then levelled it at one set each when Wozniacki double-faulted on set point.
Wozniacki won a 26-shot rally to fend off a break point in game four of an increasingly tense deciding set, which crept up to 4-4 before the Dane grabbed a chance to go ahead.
After losing a break point which she earned off a net cord, Wozniacki pounced on a second opportunity when she scrambled to Williams’ risky cross-court drop-shot and the American netted a backhand.
But with Wozniacki serving for the match, Williams came roaring back and she broke back for 5-5 with an overhead, celebrating with a raised fist.
There was incredible drama when Wozniacki, serving to stay in the match, survived a match point with two consecutive volleys to force the third-set tie-break.
Williams double-faulted to put Wozniacki 3-1 up but the American then reeled off five consecutive points to set up two more match points, which her opponent escaped.
But after Williams set up her fourth match point with an ace, Wozniacki’s luck ran out when she swept a forehand wide, consigning her to her 10th defeat in 11 meetings with the great American. (AFP)