Match ends, Switzerland 0, France 0.
Switzerland and France played out a Euro 2016 goalless draw which took the Swiss into the last 16 and saw the French win Group A.
Paul Pogba - recalled by France in one of five changes - was lively and hit the woodwork twice in the first half.
French substitute Dimitri Payet also struck the crossbar with a brilliant volley from Moussa Sissoko's cross.
Switzerland could have had a penalty when Bacary Sagna pulled Blerim Dzemaili's shirt in injury time.
France will now play the third-placed team from either Group C, D or E - meaning Northern Ireland and the Republic of Ireland are both potential opponents - in Lyon on Sunday.
The Swiss will face the second-placed team in Group C, who are currently Poland but could be Germany or Northern Ireland, at Saint-Etienne the day before.
With Albania beating Romania 1-0, Switzerland would have progressed even if they had lost at the Stade Pierre-Mauroy in Lille.
- Who will go through and who needs what to qualify?
- Group A finale as it happened, plus reaction
- Groups and schedules: Plot your side's route to the final
France still don't know their best team
BBC pundit and France legend Thierry Henry put it best when he said his country go into the knockout stages not knowing their best XI.
France coach Didier Deschamps has changed his side in each game, with Pogba and Antoine Griezmann, who had been dropped for the 2-0 win against Albania, starting again after impressing off the bench in that match.
Juventus midfielder Pogba was the first half's outstanding player. He cleared a chance off the line, had a shot tipped onto the bar, forced another save from Yann Sommer and then smashed the ball against the bar with a swerving strike after a bursting run.
However, it was a different story in the second half, with the period only coming to life when Payet - the star of the tournament so far - came off the bench to a huge reception from the crowd.
The West Ham playmaker almost gave France the lead with a stunning volley after Sissoko's excellent run and cross down the right, seeing his effort come back off the bar.
Having scored in the 89th minute against Romania in the opening match and deep in injury time against Albania, he again had a chance for a late strike but his 87th-minute free-kick, which looked goalbound, hit a team-mate in the wall.
Swiss hold their own against the hosts
Switzerland have not beaten France in seven meetings now and rarely looked like ending that run, failing to hit the target with six shots - three were off target and three were blocked.
However, they played well - a long way from their 5-2 hammering by Les Bleus at the 2014 World Cup - and had 58% of possession.
They could even have topped the group above the hosts had they been awarded a penalty at the end when Sagna appeared to foul Dzemaili.
This is the first time they have qualified for the knockout stages of a European Championship, at the fourth attempt.
New balls please. Shirts too
It was a strange game where on at least five occasions a Switzerland player's shirt was ripped. Midfielder Granit Xhaka, who joins Arsenal this summer, ended the game on his third jersey.
The ball even burst in the second half when Valon Behrami stood on the ball while tackling Griezmann.
Man of the match - Granit Xhaka (Switzerland)
Xhaka has cost Arsenal £35m from Borussia Monchengladbach and, on his displays so far at Euro 2016, he looks a stellar signing.
After two games he had the second most touches and passes in the tournament, behind Toni Kroos.
And he topped the charts for both against France, having 105 touches and making 94 passes, with an 89% completion rate. For comparison, Pogba had the ball most for France with 73 touches, passing it 46 times with 78.3% accuracy.
The view from the managers
France coach Didier Deschamps: "The pitch is annoying. I don't know who is responsible. We are only in the group stage and it is in a state.
"But for a great goalkeeper and a few centimetres, we would have scored goals. You can always criticise but we kept a clean sheet and we finished top of the group.
"Every match is difficult. Apart from Spain, one or two examples, everyone is finding it tough.
"Paul Pogba was the life force of the match in the first half; he was the heart and soul. In the second half he didn't get forward but he has huge potential and I have huge confidence in him."
Switzerland coach Vladimir Petkovic: "It's a significant achievement but the first step forward was this, our minimum objective. We played well, we held firm and now we know we will play on Saturday.
"We need to rest up and now other sides deserve to run and play against us. We're relaxed and we'll be trying to win the game and not just do ourselves credit.
"We were excellent in the first half. In the second half it was tricky with the playing surface and we faded a bit. We kept our heads up, but we must do better in the last third of the pitch.
"It [the pitch] hampered the quality of the game. It does not hold up well and I hope they can fix it, but it was the same for both sides."
The game in numbers
- 20: The game had 20 shots (including blocked), the third lowest at Euro 2016 (16 - Republic of Ireland v Sweden, 12 - Italy v Sweden)
- 15: However, the first half saw 15 shots - only three Euro 2016 games have seen that many or more in the first half and Switzerland have been involved in two of those (16 v Romania)
- 54: Hugo Lloris has captained France 54 times - a joint record with Didier Deschamps, the current France boss
- 9: Yohan Cabaye made nine tackles against Switzerland; no other player has made more in a game at Euro 2016
- 23ShaqiriSubstituted forFernandesat 79'minutes
- 18MehmediSubstituted forLangat 86'minutes
- 7EmboloSubstituted forSeferovicat 74'minutes
- 5Von Bergen
- 4RamiBooked at 25mins
- 21KoscielnyBooked at 83mins
- 7GriezmannSubstituted forMatuidiat 77'minutes
- 20ComanSubstituted forPayetat 63'minutes
- Damir Skomina
- Shots on Target
Second Half ends, Switzerland 0, France 0.
Attempt blocked. Dimitri Payet (France) right footed shot from outside the box is blocked.
Hand ball by Fabian Schär (Switzerland).
Substitution, Switzerland. Michael Lang replaces Admir Mehmedi.
Offside, Switzerland. Admir Mehmedi tries a through ball, but Blerim Dzemaili is caught offside.
Laurent Koscielny (France) is shown the yellow card for a bad foul.
Stephan Lichtsteiner (Switzerland) wins a free kick in the attacking half.
Foul by Laurent Koscielny (France).
Attempt missed. Dimitri Payet (France) right footed shot from outside the box is close, but misses to the right. Assisted by Paul Pogba.
Substitution, Switzerland. Gelson Fernandes replaces Xherdan Shaqiri.
Foul by Haris Seferovic (Switzerland).
Adil Rami (France) wins a free kick in the defensive half.
Substitution, France. Blaise Matuidi replaces Antoine Griezmann.
Dimitri Payet (France) hits the bar with a right footed shot from the left side of the box. Assisted by Moussa Sissoko with a cross.
Blerim Dzemaili (Switzerland) wins a free kick in the defensive half.
Foul by Yohan Cabaye (France).
Substitution, Switzerland. Haris Seferovic replaces Breel Embolo.
Foul by Admir Mehmedi (Switzerland).
Adil Rami (France) wins a free kick in the defensive half.