Novak Djokovic was sent spinning out of the French Open by world number 72 Marco Cecchinato.
The 12-time grand slam winner needed lengthy treatment on a neck problem after dropping the first set. But Cecchinato proved an even bigger pain in the neck for the 2016 Paris champion.
Djokovic had two set points at 6-5 in the second but went on to lose a tie-break.
Italian Cecchinato was mixing things up to great effect, tying Djokovic to the baseline while throwing in regular, at times remarkable, spin-heavy drop-shots from the back of the court.
Giant Killer!June 5, 2018
Djokovic somehow regrouped to win the third set at a canter, and a suddenly frustrated Cecchinato was hit with a point penalty.
The storm seemed to have blown itself out and Djokovic served for the set at 5-3. But from somewhere Cecchinato got a second wind and took the fourth in a thrilling tie-break, converting a fourth match point to win 6-3 7-6 (7/4) 1-6 7/6 (13-11).
Cecchinato had not won a single grand slam match until he arrived at Roland Garros, but the 25-year-old is now the first Italian to reach the Paris semi-final since Corrado Barazzutti 40 years ago.
He said on courtside: "Maybe I'm sleeping. It's amazing. It's unbelievable for me. For me to beat Djokovic in a quarter-final at Roland Garros, it's amazing.
"For me, it's the first time semi-final grand slam. Now I need to think for the semi-final and I need some rest for recovery. I am very happy."