World number two Simona Halep stayed on course to win her first Italian Open title after beating Garbine Muguruza 6-3 4-6 6-4 in the semi-finals in Rome.
Top seed Halep, 28, overpowered her 26-year-old opponent in the first set.
The pair then traded several breaks in the second set before Spain's Muguruza forced a decider.
Romania's Halep edged the third set and will play Marketa Vondrousova or a Karolína Pliskova in her third Italian Open final appearance on Monday.
Australian Open runner-up Muguruza, who beat Britain's Johanna Konta in the quarter-finals, took a medical time-out at the end of the first set and appeared to be moving more freely afterwards.