Cibulkova, from Slovakia, appeared likely to advance to the final after breaking Putintseva midway through the deciding set, but Putintseva fought back to win 3-6, 6-4, 6-4.
It's was the second win over a top-10 player in the span of 24 hours for Putintseva, from Kazakhstan, who battled past Svetlana Kuznetsova in three sets on Friday.
Putintseva's first career WTA final will be against France's Kristina Mladenovic, who likewise fought back from a set down to beat Russia's Natalia Vikhlyantseva.
In a match with frequent breaks of serve, Mladenovic served particularly poorly in the first set but dominated Vikhlyantseva, the world No. 115, in the second and third to win 4-6, 6-2, 6-2.
Mladenovic, who is ranked 51st, is seeking a first career WTA title in her fourth final appearance. She showed her ability in the earlier rounds with dominant straight-sets wins over Venus Williams and Roberta Vinci, last year's St. Petersburg champion.
The 19-year-old Vikhlyantseva's run to the semifinals means she will break into the top 100 for the first time when the rankings are updated on Monday.