World number one Novak Djokovic had to save two match points against Juan Martin del Potro before advancing to the Italian Open semi-finals.
The Serb, 31, will play Argentina's Diego Schwartzman on Saturday after beating his compatriot Del Potro 4-6 7-6 (8-6) 6-4 in Rome.
Earlier, defending champion and eight-time winner Rafael Nadal beat fellow Spaniard Fernando Verdasco 6-4 6-0.
Nadal came from 2-0 down to reach the semi-finals in one hour 38 minutes.
The 32-year-old, who has lost in the semi-finals of his past four tournaments, next faces 20-year-old Greek Stefanos Tsitsipas, who went through following the withdrawal of Roger Federer.