Germany were unable to end England’s 10 match win streak following a 3-2 defeat at Berlin’s Olympic Stadium in the first of their pre-Euro 2016 warm up games.
Joachim Low decided to give Besiktas star Mario Gomez the nod upfront and the prolific striker thought he had repaid the managers faith in him when he scored in the first half but the linesman ruled his effort offside – although the replays showed that he was clearly on.
Toni Kroos gave Germany the lead just before half-time with a long range effort although England keeper Butland should really have done better.
Mario Gomez did finally get on the scoresheet with a powerful header early in the second half but Harry Kane scored shortly after to pull one back.
Second half substitute Jamie Vardy stole the headlines with a cheeky back heel to equalise on his England debut with his first touch of the game.
There was however, more late drama as Eric Dier scored the winner just before the full-time whistle.
Germany 2-3 England
Kick-Off: 19:45 GMT
Germany confirmed starting lineup:
Neuer; Rudiger, Can, Hummels, Hector; Kroos, Khedira; Muller, Ozil, Reus; Gomez
Subs: Leno, Ter Stegen, Trapp, Mustafi, Rudi, Schurrle, Podolski, Ginter, Gotze, Kramer, Draxler, Bellarabi, Tah
Manager: Joachim Low
England confirmed starting lineup:
Butland; Clyne, Smalling, Cahill, Rose; Henderson, Dier; Lallana, Alli, Welbeck; Kane
Subs: Walker, Forster, Walcott, Stones, Jagielka, Milner, Drinkwater, Vardy, Barkely, Sturrdige, Heaton
Manager: Roy Hodgson
Goals: Kroos, Gomez, Kane, Vardy, Dier