Tenth-seeded Li Na rallied to beat 16th-seeded Lucie Safarova 3-6, 6-3, 7-5 on Sunday to advance to the final in the Rogers Cup.
Li, from China, will face fifth-seeded Petra Kvitova, a 3-6, 6-2, 6-3 winner over seventh-seeded Caroline Wozniacki. The final is Monday.
Safarova led 5-1 in the final set, before Li rallied to win the error-filled match.
"There was nothing on my mind, you couldn't think too much on the court," said Li, the 2011 French Open champion. "I just told myself to play point by point, play the ball back in the court and see how it's going.
"This is tennis. You put the ball back in the court, and over the net. It looks easy, but sometimes I couldn't do it."
The 30-year-old Li has a six-match winning streak against Safarova dating to 2009.
"Closing a match is always a little bit of a nervous moment," Safarova said. "I was thinking that she made a lot of mistakes in the games before, and I just didn't put enough pressure and she used that situation to turn it over. Then she started serving well and playing better and it just slipped away."
Kvitova, the 2011 Wimbledon champion, dominated the final two sets of a rain-interrupted semifinal.
The 22-year-old Czech has won in Europe, Asia and Australia, but has yet to take a WTA title on North America soil. She said it might have to do with her asthma.
"I have trouble to breathe," she said. "This week it wasn't too bad. So maybe I'm lucky. But I think it's great to know that I can play here."