Jasmine Paolini stunned Elena Rybakina in a back-and-forth contest to reach her first Grand Slam semi-final at the French Open.
Italian 12th seed Paolini won 6-2 4-6 6-4 against the Kazakhstani fourth seed on a windy Court Philippe-Chatrier.
“It’s an unbelievable feeling,” said Paolini, who wrapped up the win after two hours and three minutes at Roland Garros.
She will face Russian Mirra Andreeva after the 17-year-old claimed the biggest win of her career to knock out Belarusian second seed Aryna Sabalenka.
Paolini was competing in her first Grand Slam quarter-final following an impressive season which has seen the 28-year-old break into the top 15 for the first time and win her maiden WTA 1,000 title at the Dubai Tennis Championships in February.
But in former Wimbledon champion Rybakina, 24, she was facing the world number four and a player, alongside Sabalenka, who was favourite to challenge two-time defending champion Iga Swiatek for the title in Paris.
Paolini started brightly, showing no signs of nerves as she broke Rybakina in the opening game.
With Rybakina struggling for consistency, Paolini took advantage, serving her first three games to love with a whipping cross-court forehand winner.
Paolini broke again before seeing out the set 6-2 with Rybakina earning just a single point on the Italian’s serve.
Having dropped a set for the first time this year in Paris, Rybakina needed to respond and despite unforced errors punctuating her performance, she started to find more consistency with her strokes.
The pair traded multiple breaks before a key moment came at 5-4 as a Paolini backhand went long, giving Rybakina set point which she claimed with some good work at the net.
The deciding set saw both players hampered by the wind and struggling for consistency with unforced errors and breaks of serve.
At 4-4 a wild forehand into the net from Rybakina, which prompted a puzzled look from her coaching team, gave Paolini a 30-15 lead which she took advantage of, earning the chance to serve for the match.
A long backhand from Rybakina – her 48th unforced error – then gave Paolini victory for the biggest win of her career so far.