Iga Swiatek beat Coco Gauff 6-4 6-3 to secure her place in the Italian Open final in Rome.
Gauff went up by an early break, but world number one Swiatek quickly retrieved the deficit before going on to take the opening set.
Swiatek broke the American's serve in the fifth game of the second set before a double fault at 4-3 up resulted in the 22-year-old Pole facing only her second break point of the match.
That opportunity was not seized and Swiatek broke the world number three's serve in the next game to win the match in one hour and 47 minutes.
Swiatek will play Aryna Sabalenka in the final after the world number two beat American Danielle Collins 7-5 6-2.
"I'm just going to play as best tennis as possible in the final," said Swiatek, who won the Italian Open in 2021 and 2022.
"It is still a long way to win and still a lot of work to do."
The match against Sabalenka will be a repeat of the Madrid Open final earlier this month which Swiatek won in dramatic fashion.
In the men's draw in Rome, Nicolas Jarry caused an upset by beating world number seven Stefanos Tsitsipas to reach the semi-finals.
Jarry, from Chile, claimed a 3-6 7-5 6-4 win to reach his first ATP Masters 1000 semi-final.
He will face Tommy Paul in the last four after the American knocked out Hubert Hurkacz of Poland.
Paul, who beat defending champion Daniil Medvedev in the last 16, won 7-5 3-6 6-3.