Defending champion Aryna Sabalenka produced a stunning comeback against Elena Rybakina to set up a Madrid Open final with Iga Swiatek.
The Belarusian second seed fought back from a set and a break down to win 1-6 7-5 7-6 (7-5).
A two-time winner in the Spanish capital, Sabalenka will face world number one Swiatek in a repeat of last year's final.
Poland's Swiatek breezed into the Madrid showpiece earlier on Thursday with a 6-1 6-3 victory over Madison Keys.
"It's definitely going to be a great battle," Sabalenka said in her post-match interview.
"We always fight as hard as we can, always incredible matches. I'm really looking forward to this final and I'm going to do everything I can to get this win."
Swiatek, a clay-court specialist, dominated throughout her match with Keys, needing just 70 minutes to secure a place in her third WTA 1,000 final this season.
A US Open finalist in 2017, Keys could not capitalise on the few chances she had, missing out on three break points and making 28 unforced errors to Swiatek's eight.
BBC