Alexander Zverev will face Stefanos Tsitsipas in the semi-finals of the Italian Open after beating Chilean Cristian Garin in Rome.
German world number three Zverev, who lifted the title in 2017, eased to a 7-5 6-2 win over the unseeded Garin.
Tsitsipas, ranked fifth in the world, overcame Italian Jannik Sinner 7-6 (7-5) 6-2 in his quarter-final in front of a raucous crowd.
Top seed Novak Djokovic faces Canadian Felix Auger-Aliassime at 20:30 BST.
Saturday's semi-final between Zverev, 25, and Tsitsipas, 23, will be the third time in the space of a month the pair have faced each other in the last four of an ATP tournament.
Tsitsipas beat Zverev on his way to winning the Monte Carlo Masters in April, before the German avenged that defeat in Madrid last week.
"He's a player that challenges me when I'm out on the court," Tsitsipas said of his rival.
"We have similar game styles, but he is one of the most difficult players on the tour. He has achieved a lot so far and I try to look up to him."
Zverev, who is yet to drop a set in Rome, said his match with Garin "wasn't pretty tennis" at times, but it was important he "got the job done".
Garin, 25, took the first break point to lead 3-2, but Zverev responded to take a 4-3 advantage before closing out the opening set.
He then took command of the second, converting two of his seven break points to wrap up the success.
Earlier on Friday, Tsitsipas raced to a 3-0 lead over Sinner in the first set before the home favourite battled back to draw level. Tsitsipas eventually edged the 10th seed on a tie-break.
After the Greek sailed through the second set, there was a stoppage in play at match point when a spectator fell ill. Following the restart, Tsitsipas dealt with Sinner's mistimed drop shot to claim the win.
In the other quarter-final, Norwegian fifth seed Casper Ruud continued his good form as he saved two set points against Canada's Denis Shapovalov for a 7-6 (9-7) 7-5 success.