Spanish 10th seed Carla Suarez Navarro will meet Maria Sharapova in Sunday's Italian Open final in Rome.
Suarez Navarro beat second seed Simona Halep 2-6 6-3 7-5 for a fourth win out of four against the Romanian.
Sharapova, the two-time Rome champion, overcame Australia-based Russian Daria Gavrilova 7-5 6-3.
The victory, combined with Halep's loss, means Sharapova will be second seed for the French Open which starts on 24 May.
Suarez Navarro is the form player on the WTA Tour this year with 31 wins and will be seeking her second career title against Sharapova.
But she was two points away from losing in the 10th game of the final set before snatching the win.
The Barcelona-based 26-year-old needed seven set points to close out the second set and three to end the third.
Sharapova had lost to Gavrilova in their only previous meeting in Miami in March and the qualifier, ranked 78 in the world, put in a spirited performance this time around again in the early stages. But she suffered an abdominal muscle injury and needed to leave the court for treatment late in the first set.
Despite being hampered by the injury, Gavrilova raised her game at the start of the second set and broke her opponent early to go 3-1 up.
But Sharapova regained her composure and her range to reach the final.
She leads Suarez Navarro 3-1 in their head-to-head encounters but Sunday's decider will be their first meeting on clay.