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.
|Horsing around: Muller takes tips from equine companion|
|Lynn set for further assessment on dislocated shoulder|
|Ronaldo jets off for a break as Madrid head to Leganes|
|Bastareaud back in one of five France changes|
|Mistake to let Kroos leave Bayern for Madrid - Sammer|
|Short´s fifty and Agar´s spin seal deserved Australian tri-series win|
|Spalletti tips Ancelotti for Italy job|
|I can´t wait for retirement - Federer|
|Mendy on course for World Cup, says Deschamps|
|Man Utd on dismal knockout run, Roma have Shakhtar curse - Champions League in Opta numbers|
|Azpilicueta hoping for greater fortune at Camp Nou|
|Out of nothing he can score goals – Heynckes hails Muller|
|CONCACAF Champions League Review: Giovinco inspires Toronto, Tigres held|
|Steelers LB Shazier says he´s ´best linebacker ever´|
|Ranieri: I´ll quit Nantes if offered Italy job|
|Thiem keeps title defence on track, Monfils saves match point in Rio|
|Barcelona are great even without Neymar – Willian|
|Del Potro, Raonic progress at Delray Beach|
|Dolphins place franchise tag on Landry|
|Colts QB Luck ´extremely optimistic´ about shoulder rehab|
|Conte wants to see out Chelsea contract but has bags packed|
|A´s respond to Gruden´s belittling of Oakland|
|Yankees acquire Drury in three-team deal with Diamondbacks, Rays|
|Messi goal will give Barcelona more space at Camp Nou – Suarez|
|Serena Williams: I almost died|
|Conte defends ´incredible´ Christensen after Barcelona error|
|Bayern taking nothing for granted after 5-0 demolition – Heynckes|
|Valverde: Barcelona away goal not definitive for progression|
|Muller & Robben bemoan poor first half despite Bayern rout|
|Ivashka sets up Wawrinka Marseille meeting|
|Chelsea close to a perfect game against Barcelona - Conte|
|Defending for 90 minutes at Barcelona a ´suicide mission´ - Fabregas|
|Championship Review: Villa miss chance to move into promotion places|
|Messi ends his Chelsea hoodoo|
|Texans release all-time leading tackler Brian Cushing|
|Chelsea 1 Barcelona 1: Messi breaks Blues hoodoo to leave tie in the balance|
|Bayern Munich 5 Besiktas 0: Two-goal Muller inspires emphatic win after Vida red|
|Woods and Stricker appointed USA Ryder Cup vice-captains|
|Wales must attack Sexton and Murray - Gatland|
|De Vrij confirms intention to leave Lazio on free transfer|
|Sanchez move down to Champions League frustration at Arsenal - Mourinho|
|Mourinho suggests Pogba is fit to face Sevilla|
|Clinical Kerber strolls past Strycova in Dubai|
|AFC Champions League Review: Hulk & Oscar lead Shanghai, Jeonbuk Motors hit six|
|Cech expects Ospina to start for Arsenal in EFL Cup final|
|Gueye signs new Everton deal until 2022|
|FA charges Man City and Wigan for failing to control players|
|Aguero faces no action over Wigan fan incident|
|Martin released by Buccaneers|
|Las Palmas get green light to sign Viera replacement amid Nasri talk|
|De Kock, De Villiers & Du Plessis looking to Australia Tests|
|FA issues West Ham with anti-doping charge|
|Florenzi a doubt to face Shakhtar, confirms Roma´s Di Francesco|
|Maybe we ´lock him up or tie him up´ – Montella ponders how to stop Sanchez|
|French rugby crisis could last a long time - Magne|
|Pogba and Ibrahimovic train with Man Utd ahead of Sevilla tie|
|Zidane hints at resting Ronaldo for Real Madrid´s trip to Leganes|
|Biggar, Halfpenny and Williams return to Wales´ starting XV|
|Modric adds to Real Madrid injury worries|
|Braehmer pulls out of Super Series semi-final|
|Wolfsburg turn to Labbadia in fight for Bundesliga survival|
|Hales follows Rashid in signing white-ball deal|
|Wigan to investigate pitch invasion after win over Manchester City|
|Drogba ´couldn´t be more proud´ as son signs for Guingamp|
|Stones making no excuses for shock Wigan defeat|
|Bellugi scathing of Inter form and transfer policy|
|Ringrose could make Six Nations impact after comeback|
|Rakitic: I´ve not seen Messi in the gym this often|
|Winter Olympics 2018: Slovenian ice hockey star Jeglic sent home after positive doping test|
|Sevilla v Manchester United: Montella and Mourinho unified in pursuit of identity|