Germany's Alexander Zverev beat Rafael Nadal for the first time on clay to reach his second Madrid Open semi-final.
It was his third straight victory over the 34-year-old.
Zverev will face third seed Dominic Thiem in the last four after the Austrian defeated American John Isner 3-6 6-3 6-4.