Defending Madrid Open champion Aryna Sabalenka produced a brilliant comeback from a set and a break down to beat Elena Rybakina and reach the final on Thursday.
The Belarusian second seed triumphed 1-6, 7-5, 7-6 [7/5] and will face world number one Iga Swiatek on Saturday in a rematch of last year's final.
The clinical Swiatek earlier eased past American Madison Keys with a comfortable 6-1, 6-3 victory.
In the men's draw third seed Daniil Medvedev retired injured from his quarter-final clash with Jiri Lehecka.
Sabalenka, 25, sealed her victory with a typically powerful serve that Rybakina could not control.
The big-hitter had lost three of her last four clashes against the 24-year-old but emerged triumphant as they met on clay for the first time.
Swiatek has a 6-3 record against Sabalenka but in their only match in the Spanish capital, the latter triumphed in three sets a year ago to claim the title.
Dominant on clay, Swiatek barely put a foot wrong against Keys, making just eight unforced errors in the match to leave the 29-year-old American with virtually no chance.
Russia's Medvedev struggled through to the end of the first set against Lehecka with an apparent upper thigh problem, losing it 6-4 before retiring.
The Czech progressed to his first Masters 1000 semi-final, where he will face Felix Auger Aliassime, who received a walkover after top seed Jannik Sinner withdrew Wednesday with a hip problem.
Taylor Fritz will face Andrey Rublev in the other semi-final on Friday, after the Russian ousted home favourite Carlos Alcaraz on Wednesday. (AFP)