British number one Johanna Konta reached the semi-finals of the Italian Open with a 6-3 3-6 6-1 win over Czech teenager Marketa Vondrousova.
On her 28th birthday, Konta, who sealed the last of her three WTA titles in 2017, won in an hour and 53 minutes.
She faces Kiki Bertens in the last four after the Belgian advanced because world number one Naomi Osaka pulled out with a hand injury.
Karolina Pliskova beat another former world number one, Victoria Azarenka.
Czech Pliskova’s semi-final opponent will be Greece’s Maria Sakkari, who won 11 of the last 12 games to beat Kristina Mladenovic of France 5-7 6-3 6-0.
Victory for world number 39 Sakkari, who overcame Konta in the final to claim the Morocco Open title this month, means there will be a qualifier in the final four in Rome for the first time since Daria Gavrilova in 2015.
With Vondruosova showing the effects of two three-set matches the day before, Konta quickly took control and sealed the opening set with a deft drop volley at the net.
But after an emotional discussion with her coach, the 19-year-old left-hander, who won their only previous meeting on the hard courts of Indian Wells last year, seized on a loose game from Konta to break in the fifth game of the next.
A wild forehand from the Briton went wide and long to take the match to a decider.
Konta, who also played two matches on Thursday, saved a break point in the second game with a backhand that clipped the line and then broke in the next in a run of six successive games.
Osaka will remain world number one next week, following Simona Halep’s second-round exit to Vondrousova on Thursday.
Pliskova recorded her 500th career win with a 6-7 (5-7) 6-2 6-2 victory over Azarenka, levelling their head-to-head record at 4-4.
She wrapped up victory in two hours 26 minutes to avenge a loss to Azarenka – who also has 500 career wins – in their most recent meeting on the indoor clay-courts of Stuttgart last month.