The 27-year-old forward cancelled out Toni Kroos' first half penalty with a fine header just past the hour and then scored with a spot-kick himself late in the game to kill off the visitors' hopes of reaching the semi-finals.
The French found themselves on the backfoot in the first half but did not lose confidence even when the Germans came close to a second goal.
"This is the difference between a team with a lot of confidence and a team like Germany which lacks some confidence and is maybe not as efficient," France coach Didier Deschamps told reporters.
France top the League A Group 1 standings with seven points from three games above the Netherlands on three from two and Germany with one.
The Germans, with five changes to the team that lost 3-0 away to the Netherlands on Saturday, had their share of chances and overall looked sharper despite their sixth defeat of 2018.
Leroy Sane and Serge Gnabry added much needed speed to Germany's game and the overall performance offered coach Joachim Loew some respite after recent setbacks.
"We were on the same level with the world champions and we should have scored a second goal in the first half. But the French have a lot of quality and scored two goals from just a handful of chances."
After crashing out at the group stage in the World Cup in Russia, Germany, world champions in 2014, are still looking for their first victory in UEFA's the Nations League competition.