Austria's Dominic Thiem dumped seven-times champion Rafael Nadal out of the Italian Open 6-4, 6-3 on Friday to reach the semi-finals.
Beaten twice by Nadal in the space of a month, in the Barcelona and Madrid Open finals, Thiem took his revenge by handing the 30-year-old Spaniard a first clay court defeat of the season in Rome.
The upset, after one hour and 51 minutes, ended Nadal's 17 match unbeaten run on clay.
Thiem will now take on either world number two Novak Djokovic or Argentina's Juan Martin del Potro, meeting for the 18th time on Friday evening, in Saturday's semi-final at the Foro Italico.
The aggressive eighth seed had Nadal rattled from the start and broke the Spaniard in the first and fifth games to go 5-1 up before Nadal fought back to 5-4.
Thiem then broke for a 4-3 lead in the second set with successive backhand and forehand winners and held on to leave Nadal serving in vain to stay in the match. The Austrian clinched victory on his first matchpoint as Nadal hit wide.
The Spaniard will now focus on the French Open, where he will be aiming for a 10th title at Roland Garros.
Rising German star Alexander Zverev earlier reached the semi-final with a 7-6(4) 6-1 defeat of world number six Milos Raonic.
Zverev, 20, will face John Isner for a place in the final after the American beat Croatian Marin Cilic 7-6(3), 2-6, 7-6(2).
"It's another stepping stone in my career," Zverev told the ATP's website.
"I feel like I have played very well today. I returned very well.
"So I'm happy to be in the semis and playing John tomorrow, who I know very well from our Saddlebrook (Florida) days. It's going to be a great match."