It wasn't all plain sailing for France as the engine was stripped out of their midfield 10 minutes before half-time when Chelsea's N'Golo Kante went off with a hamstring injury, to be replaced by Adrien Rabiot.
France were fairly comfortable in holding onto their lead for the last 20 minutes and will go into Tuesday's home game against Belarus knowing a win will secure top spot in the Group A.
Meanwhile, in the same group Arjen Robben scored one goal and set up another as the Netherlands kept alive their slender hopes of reaching the finals with a 3-1 victory over Belarus. The lead was doubled in the 86th minute by Andre Silva. However, the latter have the superior goal difference and they may add to that against a side who have lost all of their nine game so far.
"We didn't have a great second half, we had few opportunities and struggled a lot". "We knew it would be hard, they're a team that had won four times at home in this group".
The first booking of the game came in the ninth minute, when Simeon Slavchev was yellow carded for pulling back Kylian Mbappé. "When you have good players, it's normal to expect us to make the difference".
Greece are in second place, two points clear of Bosnia-Herzegovina.
Bosnia were not done and equalised in the 82nd minute through Dario Dumic, but Yannick Carrasco made it 4-3 seconds later - a result which also guarantees Italy a place in the playoffs, while Scotland and Wales can also secure progress via the playoffs if they win their match against each other on Monday, as can Croatia if they beat Ukraine.
The visitors continued to dominate and almost found a second seven minutes later when N'golo Kanté found Mbappé in space on the left and the PSG forward forced a fine save from Plamen Iliev at the near post.
Goals from Haris Medunjanin and Edin Visca put the Bosnians ahead in Sarajevo after Belgium full-back Thomas Muenier's early strike, but Michy Batshuayi and Jan Vertonghen turned things around.