Lars Stindl rescued a draw in stoppage time to extend Germany's unbeaten run to 21 matches as the world champions twice came from behind to earn a 2-2 draw with France in Cologne.
Stindl, an 83rd-minute replacement for Emre Can ensured Joachim Low's finished 2017 without tasting a single defeat, their last loss coming at the hands of France in the European Championship semi-finals last year.
That run looked like coming to an end when Alexandre Lacazette netted twice on Tuesday – the Arsenal striker profiting from Anthony Martial's brilliant footwork for his first before Kylian Mbappe created his second.
In between the Arsenal striker's brace Timo Werner levelled for the hosts as he broke the French offside trap to sweep home Mesut Ozil's pass.
But a second goal looked too much for the hosts as the game entered stoppage time, however substitute Stindl had other ideas as he fired low past Steve Mandanda just 10 minutes after coming on.
Low will hope to see better defending when his side face Spain and Brazil before they begin their World Cup defence in Russia, but their battling spirit will give the coach plenty of encouragement.
A Germany side showing six changes from their draw with England took time to settle and that allowed France to have the better of the opening exchanges, although they initially failed to stretch Kevin Trapp.
Mbappe may well have done when he found space in the 12th minute, but Mats Hummels came to Germany's rescue with a perfectly executed sliding tackle.
Lacazette – preferred in attack to Antoine Griezmann – eventually tested Trapp just before the half-hour mark, while at the other end an important block from Raphael Varane denied Ozil.
Minutes later Trapp had to be alert again to keep Mbappe out low to his right, the Paris-Saint Germain goalkeeper denying his club-mate after a neat Cruyff turn in the penalty area.
Finally, in the 33rd minute, the goal France's pressure deserved came, Martial dancing past Niklas Sule before touching the ball wide of Trapp for Lacazette to apply a simple finish.
Sacre bleu! Nothing Trapp can do this time, as Martial goes full FIFA to give Lacazette a tap-in (33') #GERFRA 0-1— Germany (@DFB_Team_EN) November 14, 2017
Half-time substitute Antonio Rudiger should have brought Germany level seven minutes after his introduction, but the Chelsea defender skewed his effort wide after great work down the left from Julian Draxler.
Germany did not have to wait long for their equaliser as Ozil led a swift counter-attack, his pinpoint throughball releasing Werner and the RB Leipzig forward calmly slotted under Mandanda.
Almost immediately Martial thought he had restored France's lead, but Trapp got down brilliantly to push away his dipping strike.
A Kroos free-kick rattled Mandanda's bar with 20 minutes to play but while the Real Madrid midfielder was wondering how it stayed out, France scored.
Rudiger inexplicably left Lacazette in acres of space 20 yards from goal and the 26-year-old beat Trapp again after being found by Mbappe's pass.
Low introduced Mario Gotze for his first international appearance in just shy of a year and he came good with a superb assist for Stindl, who kept their run going by sliding home a neat 93rd-minute finish.
|Bayern boss Heynckes slams ´insanity´ of Champions League ticket prices|
|Messi hails Barcelona team-mates after European Golden Shoe triumph|
|Napoli´s Hamsik saves space for a Serie A title-winning tattoo|
|Jardim urges quick Monaco response to Champions League woe|
|You always have a chance - Wagner hopeful of Man City scalp|
|Chelsea´s tough title defence was to be expected - Klopp|
|Horne replaces Dunbar in Scotland XV|
|Neymar and Cavani bound by common goal at PSG|
|Simeone: Everything seems better when Atletico win|
|F1 Raceweek: Scores to be settled in Abu Dhabi|
|Injuries not to blame for Real Madrid LaLiga position - Zidane|
|Icardi could stay at Inter forever, says Spalletti|
|Former England star Owen finishes second on horse racing debut|
|Emery backs Mbappe to shine on Monaco return|
|Robben-less Heynckes handed timely Coman boost|
|Guardiola not complacent ahead of Huddersfield clash|
|Trump to ´quickly´ play golf with Woods and Johnson|
|Salah not Liverpool´s only threat, insists Conte|
|Klopp trusts Moreno ´100 per cent´ despite Sevilla shocker|
|No excuses for Conte despite Chelsea´s travel trouble|
|Salah has nothing to prove in Chelsea reunion, says Klopp|
|We´re on the Ball - Paceman Jake says England´s homework is paying off|
|Bale return could be imminent - Zidane|
|Megson´s interim role is no audition as he awaits permanent West Brom boss|
|Bosz has derby focus despite Dortmund criticism|
|Kaka predicts bright future for Milan´s Silva|
|Lyon not sorry for controversial pre-Ashes comments|
|Ashwin takes four as India skittle out Sri Lanka|
|Messi equals Ronaldo with fourth European Golden Shoe|
|Mourinho fears Fellaini exit amid Arsenal, PSG links|
|I don´t know what you want - Mourinho blasts Man United critics|
|Mourinho protecting Pogba and Ibrahimovic as they prepare for Brighton|
|Stoke to offer Crouch fresh deal|
|Record-breaker Holmes hits Fiji for six as Australia march into final|
|Del Piero expects Juventus and Dybala to rediscover top form|
|Melbourne City 1 Perth Glory 3: Ten-man hosts pay the penalty|
|Chawrasia´s challenge on track in Hong Kong|
|Herbert leads Australian Open with Day poised|
|Moyes wants greater ref protection for Carroll|
|Unsworth questions players´ commitment after Atalanta embarrassment|
|Pistorius prison sentence more than doubled|
|Who, what, when and where? – All you need to know about the 2018 World Cup draw|
|PSG prepare for Monaco with order restored and European dominance in mind|
|Wenger calms Welbeck injury fears after planned substitution|
|The Ashes round-up: Smith and Marsh steady ship after early England burst|
|Kaka unsure over playing future amid Milan directorship offer|
|Monaco v Paris Saint-Germain: The Opta facts as Mbappe returns with Neymar in tow|
|Smith, Marsh lead revival as Australia fight back against England|
|USA claim World Cup qualifying win|
|Warner and Khawaja fall in dominant England spell|
|Rivers leads Chargers past Cowboys, Vikings beat Lions|
|Griezmann happy at Atletico, says Koke|
|Maxwell puts pressure on Marsh and selectors with blazing century|
|England collapse as Aussies bowl out Ashes tourists for 302|
|Ronaldo will deliver when needed for Madrid – Alonso|
|Hunt recommits to Wallabies, Reds|
|Blues appoint Fittler in quest for Origin glory|
|Starc rips knee, pants at Gabba|
|Rodrigo commits to Valencia until 2022|
|Parker news conference unprofessional, says Joshua|
|All Blacks injuries no help to Wales – Gatland|
|Domestic bliss? Montella targets Serie A resurgence after Europa League success|
|Rooney stands by Unsworth after Everton humiliation|
|He deserved more chances – Hazard hails ´top player´ Salah|
|Hartley set to lead England at Six Nations despite Samoa omission|
|We have to stay awake all the time - Coutinho frustrated after Sevilla collapse|
|Everton 1 Atalanta 5: Cristante and Cornelius knock more shine off Premier League strugglers|
|AC Milan 5 Austria Wien 1: Andre Silva sends Montella´s men through to the last 32|
|Joshua: Awkward Fury a ´nutjob´, but I´d knock Wilder out with one punch|
|Wasteful Arsenal leave Wenger frustrated|