Alexander Zverev battled past Italy's Jannik Sinner to reach the Monte Carlo semi-finals for the second time on Friday with Alejandro Davidovich Fokina and Grigor Dimitrov also advancing to a last-four showdown.
Second-seeded Zverev won through 5-7, 6-3, 7-6 (7/5) against the 12th-ranked Italian in just over three hours and next plays either defending champion Stefanos Tsitsipas of Greece or Argentine Diego Schwartzman.
"Sad to have won," said an ironic Zverev to a crowd made up of many vocal Italians.
Earlier, Davidovich Fokina added Indian Wells champion Taylor Fritz to his high profile scalps this week with a 2-6, 6-4, 6-3 win.
The 22-year-old Spaniard, ranked 46th in the world, ousted world number one Novak Djokovic in the second round.
On Saturday, he will play Dimitrov, who also needed three sets to get past Poland's Hubert Hurkacz 6-4, 3-6, 7-6 (7/2), for a place in the final.
"When you beat the world number one it gives you a lot of confidence physically, mentally and technically," said Davidovich Fokina.
"I am pushing myself every match to play harder and harder."
Zverev, the world number three, shrugged off a thigh problem and looked to have the upper hand, reeling off a series of 13 winning points for a 4-1 lead in the first set against a 20-year-old opponent nursing a blistered foot.
But Sinner, buoyed on by a vocal Italian crowd on the French Riviera not far from home, fought back to 4-4, with a Zverev double fault then allowing the Italian to wrap up the first set.
Sinner broke again in the second set to lead 2-1, but Zverev dug deep to pull ahead 5-3 and hold serve for a set all.
The pair traded breaks again in the third set with Olympic champion Zverev edging a tight tie-break on his first match point to return to the semi-finals for a second time after 2018.