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.