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.
|Bale: Madrid will get back to their best|
|Pacers snap Spurs´ home streak|
|Kerber survives scare en route to quarters|
|Valverde: Messi is the best player there is and there ever will be|
|NFC championship Game: Three takeaways from Eagles´ win over Vikings|
|Holland, Richardson added to squad for South Africa tour|
|Rahm struggling to believe he´s world number two|
|No more miracles for Vikings as Eagles cruise to Super Bowl|
|Trout wears dog mask to support Eagles|
|Emery: Lyon loss unfair on PSG|
|Rahm wins CareerBuilder Challenge on fourth play-off hole|
|AFC Championship Game: Three takeaways from Patriots´ win over Jaguars|
|Spalletti defends struggling Inter amid six-game winless run|
|Holding: Kohli not great until he scores runs in England|
|Fekir: Lyon still targeting Champions League despite PSG win|
|J.J. Watt named Walter Payton Man of the Year finalist|
|Wenger suggests Sanchez is joining Manchester United for money|
|Brady produces stunning fourth-quarter comeback as Patriots reach 10th Super Bowl|
|Hazard: Chelsea don´t need to buy a striker|
|Rakitic hails ´patient´ Barcelona after Real Betis rout|
|Neymar? I´d rather watch the golf, says Bale|
|Mbappe injury from goalkeeper collision ´nothing serious´|
|Don´t look back - Guardiola gives Manchester City title warning|
|Vermaelen to face tests on new hamstring injury|
|Conte wants ´point of reference´ striker as Barnes joins surprising Chelsea links|
|Sane the perfect tonic to Sanchez blues for City and Guardiola|
|Suarez scores 100th LaLiga goal as Messi reaches new milestones|
|Irving scores 40 points on return but Celtics lose again|
|Lyon 2 Paris Saint-Germain 1: 10-man leaders downed by twin wondergoals|
|Inter 1 Roma 1: Vecino snatches point on possible Dzeko farewell|
|Real Betis 0 Barcelona 5: Messi, Suarez rampant as leaders go 11 points clear|
|PSG star Mbappe injured in goalkeeper collision|
|Smith rejects ball tampering talk|
|Monchi: Roma will replace Dzeko|
|Kessie a far better player than I was, claims AC Milan coach Gattuso|
|Neymar to Real Madrid stories manufactured by Spanish press, claims Marquinhos|
|Brady active with taped throwing hand for AFC Championship Game|
|Cagliari 1 AC Milan 2: Kessie at the double in comeback win|
|Watford hire Javi Gracia as Marco Silva successor|
|I am happy with our squad - Pochettino denies Malcom rumours|
|Not much changed - Zidane boosted by clinical Madrid|
|No chance of January move, says Vidal|
|Saracens edge into last eight as Wasps and Ulster miss out|
|Selfie or stitches? Ronaldo bloodied after Madrid brace|
|Heynckes hails Bayern win: This is what sets us apart|
|Southampton 1 Tottenham 1: Kane earns visitors a point|
|Silva assured of chances at AC Milan after latest first-team snub|
|Saracens scrape into Champions Cup last eight|
|Goretzka´s Schalke return marred by abuse|
|Real Madrid 7 Deportivo La Coruna 1: Seven-up for Zidane´s men as Bale shines|
|McIlroy ´in really good shape´ after Abu Dhabi return|
|Muller brings up 100 Bundesliga goals in Bayern win|
|Dimitrov places Kyrgios among tennis´ most talented after Melbourne classic|
|Bayern Munich 4 Werder Bremen 2: Lewandowski & Muller at the double to spare champions´ blushes|
|Do Arsenal or Man Utd get the better deal? Sanchez v Mkhitaryan in Opta numbers|
|Edmund: I can win Australian Open|
|Pele ´fine´ and in ´no pain´ after reported health concerns|
|Dimitrov can go all the way, claims Kyrgios|
|Dominant Wozniacki sets up Suarez Navarro showdown|
|Brilliant back nine sees Fleetwood retain title|
|Surgery pushes Pocock´s Brumbies return back three months|
|No mercenary? Sanchez endorses article defending imminent Man Utd move|
|Allegri expects Buffon to be ´fully recovered´ within a week|
|Atletico Madrid confirm Costa hamstring injury|
|Thisara stars as Sri Lanka stay alive in tri-nation series|
|Atalanta 0 Napoli 1: Mertens ends drought to keep visitors top|
|Nadal through to meet Cilic as Dimitrov downs Kyrgios|
|Dimitrov holds off Kyrgios as wait for home champion goes on|
|Alexis Sanchez boards plane ahead of reported Man United medical|
|Smith not sour over controversial dismissal|