Match ends, Switzerland 5, Belgium 2.
Haris Seferovic scored a hat-trick as Switzerland completed a scarcely believable comeback to thrash Belgium and reach the Nations League finals.
Thorgan Hazard scored twice for Belgium in the opening 17 minutes, leaving the Swiss needing four goals to progress.
Ricardo Rodriguez gave them hope with a penalty before Seferovic scored from close range and then smashed them into the lead.
Nico Elvedi headed in their fourth before Seferovic's third.
Switzerland will now play in next June's Nations League semi-final against hosts Portugal, England or whoever progresses out of France and the Netherlands.
Swiss looked out of it after bad start
Switzerland fans must have been thinking about leaving after Hazard's two early goals in Lucerne.
He took advantage of Elvedi's weak back-pass from brother Eden Hazard's ball to give them a second-minute lead and then smashed another into the bottom corner.
A 1-0 or 2-1 win would have done for Switzerland but because of away goals in their head-to-head record with Belgium, they needed to win by two goals once Belgium had taken a 2-0 lead.
Against the side ranked number one in the world - and after such an electric start for Belgium - that was looking very unlikely.
Belgium left floored by Swiss recovery
The hosts started another brilliant Nations League comeback, on the day England scored twice late on to beat Croatia and reach the finals.
The recovery started when Nacer Chadli fouled Kevin Mbabu as the former Newcastle player tried to shoot. Rodriguez stepped up and sent keeper Thibaut Courtois the wrong way.
Seferovic, who has scored only four goals for Benfica this season, was their unlikely hero - although Xherdan Shaqiri was magnificent too.
The pair combined for the second when the Liverpool attacking midfielder headed a cross over to Seferovic to score from close range.
And they took the lead in the game when the Swiss broke quickly from an Eden Hazard corner and Edimilson Fernandes' cross was fired home by Seferovic.
Elvedi, who was responsible for the opening goal, put them in pole position for the first time when he headed in Shaqiri's excellent cross.
Shaqiri had a hand in the fifth when his backheel found Mbabu, whose cross was perfectly headed home by Seferovic.
The Belgians looked stunned from the moment the Swiss started to come back and their best chance came seconds after the fifth goal when Eden Hazard's shot was tipped onto the bar by Yann Sommer.
- 2MbabuBooked at 79mins
- 10XhakaBooked at 38mins
- 8FreulerSubstituted forZakariaat 79'minutes
- 14ZuberSubstituted forBenitoat 87'minutes
- 9SeferovicBooked at 87minsSubstituted forAjetiat 90+2'minutes
- 15MeunierSubstituted forOrigiat 90'minutes
- 22ChadliSubstituted forBatshuayiat 65'minutes
- 16T Hazard
- 10E Hazard
- Daniele Orsato
- Shots on Target
Second Half ends, Switzerland 5, Belgium 2.
Substitution, Switzerland. Albian Ajeti replaces Haris Seferovic.
Attempt saved. Denis Zakaria (Switzerland) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Haris Seferovic with a through ball.
Delay over. They are ready to continue.
Substitution, Belgium. Divock Origi replaces Thomas Meunier.
Delay in match Edimilson Fernandes (Switzerland) because of an injury.
Attempt saved. Dedryck Boyata (Belgium) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Michy Batshuayi.
Corner, Belgium. Conceded by Kevin Mbabu.
Substitution, Switzerland. Loris Benito replaces Steven Zuber.
Haris Seferovic (Switzerland) is shown the yellow card for a bad foul.
Foul by Haris Seferovic (Switzerland).
Vincent Kompany (Belgium) wins a free kick in the attacking half.
Attempt saved. Michy Batshuayi (Belgium) left footed shot from the centre of the box is saved in the centre of the goal.
Attempt saved. Eden Hazard (Belgium) right footed shot from outside the box is saved in the top left corner. Assisted by Dries Mertens.
Goal! Switzerland 5, Belgium 2. Haris Seferovic (Switzerland) header from the centre of the box to the top left corner. Assisted by Kevin Mbabu.
Attempt saved. Haris Seferovic (Switzerland) header from the centre of the box is saved in the top right corner. Assisted by Xherdan Shaqiri.
Attempt blocked. Steven Zuber (Switzerland) right footed shot from the left side of the box is blocked. Assisted by Denis Zakaria.
Kevin Mbabu (Switzerland) is shown the yellow card for a bad foul.
Foul by Kevin Mbabu (Switzerland).