World number one Serena Williams will face Serb Ana Ivanovic in the final of the Western & Southern Open in Cincinnati.
Williams, 32, who has never won the tournament, overcame Denmark's Caroline Wozniacki 2-6 6-2 6-4.
"I was feeling tired, so in the second set I just hit big serves," she said.
Ivanovic, 26, saved two match points and a time out for heat-induced nausea on her way to beating Russia's Maria Sharapova 6-2 5-7 7-5.
Wozniacki, seeded 12th, had looked on course to beat Williams for only the second time in nine meetings, and extend a run of 12 wins in 13 matches since Wimbledon.
The in-form Dane broke three times to win the opening set but, after a break apiece at the start of the second, Williams found some rhythm and pulled away to level.
However, Williams was far from her best and continued to look out of sorts in an unpredictable final set that saw Wozniacki warned at one stage for receiving coaching by her father Piotr in the stands.
A convincing service game of three aces gave Williams a 4-2 lead but the American failed to close out the match at the first time of asking, eventually sealing victory after one hour and 43 minutes.
Williams is playing a third tournament in a row for the first time since late 2007 and followed up her 61st career WTA title at Stanford two weeks ago by reaching the semi-finals last week in Montreal, where she lost to her sister Venus.
She added: "I didn't expect to do this well over the summer. I knew I needed matches so I entered three tournaments - but I'm still here."
Ivanovic had to fight off nausea that prompted a visit from the trainer in the second game of the third set. That left her even more proud of her second straight win over Sharapova and fourth in 12 meetings.
She said: "It's a very thrilling moment because it was very competitive towards the end, especially in the third set,"
"I'm just so thrilled and happy to stay composed and fight until the last moment. When it mattered the most, I played some really good tennis."