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.
|Tiger Woods ´very pleased´ with Honda Classic showing|
|Silva: Neymar a doubt for Coupe de France quarter-final|
|Hat-trick hero Griezmann dreaming big in Atleti´s title bid|
|Before a manager I´m a human being - Guardiola explains continued ribbon protest|
|Neymar carried off on stretcher in PSG injury blow|
|Red-hot Schwartzman races to Rio Open glory|
|Paris Saint-Germain 3 Marseille 0: Neymar injured in easy Classique win|
|Roma 0 AC Milan 2: Cutrone and Calabria secure superb win for Rossoneri|
|Sevilla 2 Atletico Madrid 5: Griezmann hat-trick sinks sorry hosts|
|Tiafoe takes out first title in Delray Beach|
|Wenger trolled by Wembley official in Man City humbling|
|Wenger goes easy on Mustafi, despite Wembley woe|
|It´d be a dream - Henry wants Arsenal manager´s job|
|Man City just getting started, warns De Bruyne|
|Mind the goose! Tiger Woods collects birdies in more ways than one|
|Wenger rues early Aubameyang miss after Wembley humbling|
|Gary Neville blasts ´spineless´ Arsenal after EFL Cup final|
|Neymar shakes off virus to start for PSG in Le Classique vs Marseille|
|Guardiola sets sights on further silverware after ´outstanding´ EFL Cup triumph|
|EFL Cup social round-up: Men against boys and Wenger Out|
|Kompany: Winning EFL Cup makes injury nightmare worthwhile|
|I´ve signed for a football team, claims Usain Bolt|
|Van Gaal dismisses Chelsea rumours as ´fake news´|
|Toulon claim notable scalp with victory at La Rochelle|
|Reliability first - Renault to limit initial engine potential|
|Arsenal 0 Manchester City 3: Guardiola thrashes Wenger for first English trophy|
|Pochettino plans throw-in practice for Aurier|
|Conte hints at unhappiness with Hazard work-rate in Man Utd loss|
|Terrific Tigers tame Sarries to close in on top four|
|Mourinho v Conte: All smiles and handshakes on the touchline as feud cools|
|Mourinho hails Lukaku display against old club Chelsea|
|Depleted Rhinos slump to defeat at Widnes|
|Mourinho on Conte handshake: It doesn´t need words|
|Conte demands VAR after Morata sees Old Trafford equaliser ruled out|
|Pochettino defends ´easy target´ Alli after Van Aanholt clash|
|Juventus v Atalanta postponed due to snow|
|Criticism never affected me - Lukaku revels in comeback Man Utd win|
|Khachanov claims Marseille title to deny Pouille a home double|
|Guardiola wears yellow ribbon at Wembley despite FA charge|
|Cardiff extend winning run at Zebre|
|Manchester United 2 Chelsea 1: Lukaku and Lingard complete Old Trafford comeback|
|Chambers in as Wenger picks back three at Wembley|
|Pochettino satisfied with ´deserved´ Tottenham victory|
|Six Nations to investigate Scotland-England tunnel incident|
|It´s getting boring! - Dier lauds Kane following last-gasp winner|
|Lukaku finally makes big-game breakthrough for Manchester United|
|€70m not enough to prise Milinkovic-Savic from Lazio|
|Tah pens Leverkusen extension until 2023|
|Cardiff City 1 Bristol City 0: Zohore the hero again as Bluebirds win derby|
|Crystal Palace 0 Tottenham 1: Late Kane header snatches victory|
|Morgan praises Stokes´ comeback performance|
|Skriniar sees himself at Inter ´for many years´|
|Pogba, Martial start for Manchester United as Chelsea bring back Morata|
|Aluko under consideration as Neville offers Sampson critics ´clean slate´|
|Inter did not invent Icardi injury, Spalletti insists|
|Gilberto Silva: Wilshere´s mental strength key to success|
|Lewandowski: Agent change nothing to do with ´funny´ Real Madrid talk|
|Barcelona´s Semedo facing five weeks out with hamstring injury|
|Winter Olympics 2018: Bjoergen takes record-equalling gold as Norway top medal table|
|Dier has no regrets over Manchester United snub|
|No scorpion kick for Ospina as he relishes Wembley final|
|Pepperell holds on for maiden title in Qatar|
|Kante: Chelsea can take confidence from Barca draw|
|Mierzejewski magic fires Sydney FC to derby glory|
|Taylor and Santner spoil Stokes comeback|
|´Best in history´ Messi lauded by Coutinho, Busquets|
|I enjoy living this way! - Aubameyang won´t change lavish lifestyle|
|Kohli rested for Nidahas Trophy|
|QB Bortles signs contract extension with Jaguars|
|Shohei Ohtani has mixed results in MLB debut|