Article continues below
France gained revenge on world champions Germany for their quarter-final defeat in the Maracana in 2014 with a 2-0 win at the Stade de France on Friday evening.
The game was overshadowed by several explosions outside the stadium which left the fans inside the arena concerned, although the action continued to its conclusion to an increasingly subdued backdrop.
Olivier Giroud opened the scoring in first-half stoppage-time and Andre-Pierre Gignac added the second late on, by which time many fans were already leaving with news filtering through of fatal attacks in the French city.
Germany fielded an experimental system with three at the back, but their coach Joachim Low named 11 of his best players in the new set-up, including Mario Gomez on his return over a year since his last cap.
The hosts had a Premier League attack formed of Anthony Martial and Giroud, who had not managed to beat Manuel Neuer in his many meetings with the Bayern Munich goalkeeper in an Arsenal shirt.
It appeared to take the guests a bit of time to get used to their new system, but France were unable to make their superiority count.
For all Les Bleus' possession, the first chance of the game came at the other end.
Julian Draxler headed the ball into the path of Thomas Muller, who did not dare to take the shot on first time and, when he allowed the ball to bounce again, he lost his footing as he blazed it over the crossbar.
Draxler supplied Gomez with a chance which the Besiktas forward smashed into the side-netting, while he should have done better from Muller's pass, which he also lifted over the crossbar from eight yards.
Germany were starting to gain the upper hand, but it was France who broke the deadlock in first-half stoppage time.
Martial left Antonio Rudiger stranded, skipped past Matthias Ginter and then pulled the ball back for Giroud to tuck inside the near post.
The offside flag brought celebrations to a premature end when Giroud set up Antoine Griezmann to score, with the Arsenal forward having picked up the ball in an offside position.
Paul Pogba tried his luck from 35 yards, with his powerful, dipping shot tipped over the crossbar by Neuer.
Muller's shot out of the blue hit the inside of the left-hand post with Hugo Lloris beaten, but Gignac was more accurate at the other end with his header from Blaise Matuidi's shot finding the top left-hand corner of Neuer's goal.
The celebrations were contained as many fans headed for the exits, having learned of the incidents in the French capital on a night when an international friendly was not the main source of headlines.