Debutante Dominika Cibulkova beat Russian Svetlana Kuznetsova 1-6 7-6 (7-2) 6-4 to reach the final at the WTA Finals in Singapore.
The Slovak will face world number one Angelique Kerber or defending champion Agnieszka Radwanska on Sunday.
The Russian controlled the opening set but Cibulkova, 27, stepped it up in the second to level the match.
Cibulkova won the opening two games of the third and held off a Kuznetsova fightback to claim victory.
After a disappointing first set, where she trailed 4-1 after being broken twice in her first three service games, world number eight Cibulkova showed far more intensity in the second set.