Paul Pogba hit the woodwork twice and Dimitri Payet once, as France failed to break down Switzerland, but both go through.
The hosts were already qualified after two last-gasp and fairly unconvincing victories, so Didier Deschamps made five changes and moved to a 4-3-3 system. Switzerland still had the chance to top the group and brought in 18-year-old striking talent Breel Embolo from the start.
Switzerland had a strong opening and Paul Pogba risked an own goal on a corner, but Johan Djourou couldn’t quite get it over the line as he was unbalanced. Pogba almost scored at the other end, a fierce strike fingertipped on to the crossbar and another angled drive palmed away from close range.
Juventus midfielder Pogba was determined to prove his France doubters wrong and unleashed a rocket on 17 minutes that beat Jan Sommer only to smack against the bar.
It went back to being a more even encounter and after the break Andre-Pierre Gignac drilled straight at Sommer, then Antoine Griezmann’s effort was palmed out from under the bar after a quick one-two with Gignac.
Mousa Sissoko powered down the right and his cross found Dimitri Payet for a stunning volley, but the substitute’s effort came off the underside of the bar on 75 minutes.
Deep into stoppages, it was Switzerland who thought they would grab a winner, but Sagna’s shirt-tug on Blerim Dzemaili was not spotted.
Switzerland 0-0 France
Switzerland: Sommer; Lichtsteiner, Schär, Djourou, Rodriguez; Behrami, Dzemaili, Xhaka; Shaqiri (Fernandes 79), Embolo (Seferovic 74), Mehmedi (Lang 86)
France: Lloris; Sagna, Rami, Koscielny, Evra; Sissoko, Cabaye, Pogba; Griezmann (Matuidi 77), Gignac, Coman (Payet 63)
Ref: Skomina (SVN)