Kylian Mbappe missed the crucial kick as Switzerland beat France on penalties in the Euro 2020 last 16 after a classic European Championship game.
The Swiss had been seconds away from elimination during 90 minutes but go through to face Spain after progressing from a major tournament knockout game for the first time since 1938.
Haris Seferovic headed the Swiss ahead and they had a penalty saved that could have made it 2-0 before Karim Benzema scored twice and Paul Pogba put France 3-1 up with a screamer.
Seferovic headed in his second goal of the game for Switzerland and substitute Mario Gavranovic hammered in a last-minute equaliser to send the game to extra time.
Mbappe missed a couple of big chances for the world champions in extra time and Olivier Giroud had a header saved in the final minute.
Paris St-Germain forward Mbappe was the only player to fail to score in the shootout, after an excellent Yann Sommer save.
Switzerland play Spain, who also came through a thriller – 5-3 after extra time against Croatia – in the quarter-final in St Petersburg on Friday.
This is the biggest shock of Euro 2020 so far, with world champions France having been tipped to win the tournament by 12 of 15 BBC pundits before it started.