Kvitova, ranked a career-high fourth, will play Dominika Cibulkova of Slovakia for the title Sunday. The seventh-seeded Cibulkova defeated Lucie Safarova of the Czech Republic 6-1, 6-4, advancing to her first WTA final in more than three years.
"It will be a tough match, we know each other well," said Kvitova, who is 3-0 against Cibulkova, dropping just one set along the way.
In the opening set against the third-seeded Jankovic, Kvitova struggled to find her rhythm and was broken twice. It was the first set she dropped this tournament.
"I really had to fight, I found it difficult to keep my concentration," Kvitova said. "But every tournament has one match where things are not going your way from the start."
Kvitova twice came back from a break down to take the second set and she used an early break in the third to close out the victory on her second match point.
Cibulkova reached the quarterfinals at Wimbledon and semifinals at Den Bosch and Stanford this season. She last played a final in Montreal in 2008 and has yet to win a WTA event.
Cibulkova dropped serve at 2-1 but broke back immediately and closed the first set by winning 16 straight points. Cibulkova broke Safarova again at 4-4 in the second set and served out the match with a love game.
"I played more aggressively today from the first point until the end," said Cibulkova, who needed three sets in her three previous matches. "I was serving really well today."