Both teams had half-chances inside the opening eight minutes, but Khedira could not release a clean strike from the edge of the England box, before Three Lions skipper Cahill’s close-range header hit his own teammate Kane.
Butland’s first piece of work in the England goal came in the 14th minute when he palmed clear under pressure from Mats Hummels, before Alli headed straight at Neuer after meeting a super Cahill pass.
Germany had the ball in the back of the net in the 27th minute when Gomez found the bottom corner with a low strike, but the linesman raised his flag. It was the wrong call though, with Clyne playing the striker on-side.
Butland – having looked uncomfortable moments earlier – sent a reckless clearance straight to a German shirt and the goalkeeper was eventually beaten at his near-post by a long-range drive from Kroos.
England started to show signs of fighting their way back into the tie and Neuer got down well to keep out a Dele Alli daisy-cutter before Henderson saw an effort deflected over from a Danny Welbeck cutback.
But then Sami Khedira lifted the ball into the penalty area and Gomez climbed highest to head back across Forster to make up for his earlier disallowed effort.
England desperately needed a quick response and three minutes later Kane changed the complexion with an expertly taken goal. A corner had dropped nearby but Kane had his back to goal before a wonderful turn, eluding two opponents before driving a diagonal shot into the far corner.
Soon later Jamie Vardy came on and cheekily flicked Clyne’s perfect cross to make it 2-2. Both Alli and Henderson had chances to finish off Germany as the hosts seemed to have switched off after going two up. Eventually it did happen as England’s fresh legs won the game, Dier heading a late corner to give England the win.