Joachim Low's men dominated possession early on and put France under pressure. However, Mats Hummels deflected a low cross from Lucas Hernandez into the back of his own net to hand France the lead in the 20th minute.
Riding on their confidence from the opening goal and excellent resolve at the back, France managed to keep Germany at bay throughout the game. Both Karim Benzema and Kylian Mbappe had goals ruled out for offside in the second half, but Les Bleus held on to their slender lead to secure maximum points.
Without further delay, let's take a closer look at how players from both sides fared during the game:
Hugo Lloris - 7/10
The Frenchman looked assured in goal and made some good decisions on the night. In addition to commanding his troops well, Lloris also came off the line to deny Gnabry an opening. It never looked like he could wilt despite phases of constant German pressure.
Benjamin Pavard - 7/10
Ideally he would've liked to go further forward, but Pavard had to track down the threat posed by Gosens. The Frenchman was solid defensively and was always well-positioned to deal with threats.
Raphael Varane - 7/10
Assertive and confident at the heart of defense for France. Varane was keen to bring the ball out from the back and was not unsettled by the high press from Germany. It never looked like he would put a foot wrong.
Presnel Kimpembe - 7/10
Slotted in well alongside Varane and dealt effectively with the threat on offer from Germany. Kimpembe maintained his composure throughout, even on occasions when he was stretched at the back.
Lucas Hernandez - 8/10
Brilliant display on the left and made life difficult for Kimmich. Hernandez's run into the area before forcing an own goal off Hummels has quashed any talk of him not being offensive enough. Defensively sound whenver called upon or put under pressure.
Paul Pogba - 9/10
The star of the night. Pogba operated in a dimension of his own. From spraying passes out wide to slowing the game down, he was an absolute treat. The forward passing was laser-like too. In addition to the ball over the top that set the wheels in motion for the opening goal, Pogba also produced an inch-perfect pass to release Benzema through.
N'Golo Kante - 8/10
Reliable as always. Kante chased down everything with his terrier-like persistence and was exceptionally aware with respect to spotting danger. This could still be his tournament as he continues to thrive in the form of his life.
Adrien Rabiot - 7/10
Good on the ball. Rabiot tried to push forward and even came close to scoring on the night. Unfortunately denied by the upright, but still did enough to stand out amongst the geniuses of Pogba and Kante in midfield.
Antoine Griezmann - 7/10
Worked really hard for the team. Griezmann dropped deep on a number of instances and attempted to influence play. A proper selfless display, where he might not grab the headlines but would certainly go back satisfied with his contribution.
Karim Benzema - 6/10
Not as menacing as many people thought he could be. Benzema did find the back of the net but it was ruled out for offside. A tireless runner, however, and always willing to work his socks off for the team.
Kylian Mbappe - 8/10
Troubled Hummels with his pace. Mbappe was a constant threat whenever France attempted to break at pace. The winger forced a good save from Neuer in the first half before beating him from a tough angle in the second only to then realize he was flagged offside.
Corentin Tolisso - N/A
Replaced Benzema in the 89th minute.
Ousmane Dembele - N/A
Came on for Rabiot in the 90th minute.
Manuel Neuer - 6/10
There was absolutely no chance he could have done anything to deny the goal. Neuer was largely untroubled otherwise, but was beaten in the second half by an exquisite finish from Mbappe, who was then ruled offside.
Matthias Ginter - 6/10
Slightly better compared to his partners in the three-man defense for Germany. Ginter read the game well and made a few good interceptions. Nowhere to be seen during the build-up to the goal, though maybe he should've stayed put inside the box.
Mats Hummels - 5/10
Not an awful lot he could've done about the goal, but it was still the right idea to try and intercept it. Hummels' struggled to maintain balance and that probably did him in. Struggled a bit to deal with Mbappe's pace at times, but produced an excellent tackle on the Frenchman.
Antonio Rudiger - 5/10
Took a few risks while playing the high line in defense. On another day, Rudiger could've been left embarrassed. Bullied in the air by Pogba on more than one occasion.
Joshua Kimmich - 6/10
Dragged out wide and left helpless in the build-up to the opening goal. Tried to make an impact further up the pitch all night long, but was unable to find the end product. Kimmich had his hands full with Hernandez.
Toni Kroos - 6/10
Calm presence in midfield, heavily involved in the build-up to play. Unfortunately, Kroos went under the radar due to an impressive display from his counterparts on the other side of the halfway line. On a personal level, maybe he would have wanted to do better with one of the free-kicks.
Ilkay Gundogan - 5/10
Completely overshadowed by Pogba in midfield. Gundogan never really made an impact further up the pitch, apart from a shot he fired wide from inside the box in the first half.
Robin Gosens - 7/10
Probably Germany's best player on the night. Gosens constantly looked to bomb forward and was fairly successful in the same. Although he whipped in a number of good crosses, none of his teammates could capitalize. Minimalized the attacking impetus of Pavard to an extent as well.
Kai Havertz - 5/10
Played a few good passes but was not effective as a whole. Considering his recent form, Germany would have expected Havertz to be instrumental. Not to be on the night as he struggled to find the spark inside the final third against a resolute opposition in France.
Thomas Muller - 5/10
Struggled to make the kind of impact Germany desired from him. Muller could not find the spark inside the attacking third and was almost a passenger at times. Must certainly be disappointed and dejected by the display.
Serge Gnabry - 4/10
Showed promise early on with his high pressing and persistence, but slowly became a peripheral figure as the first half progressed. Gnabry had an excellent chance to restore parity after the interval, however, his effort rifled over the bar to add to the misery.
Timo Werner - N/A
Came on for Gnabry in the 74th minute.
Leroy Sane - N/A
Replaced Havertz in the 74th minute.
Emre Can - N/A
Came in to replace Ginter in the 87th minute.
Kevin Volland - N/A
Introduced in the 87th minute for Gosens.