Borussia Dortmund missed the chance to go joint-top of the Bundesliga as Bayer Leverkusen scored two late goals to steal an unlikely victory at BayArena.
In an entertaining first half, Kevin Volland scored twice while Mats Hummels and Emre Can each netted.
Raphael Guerreiro gave Dortmund the lead on 64 minutes only for the hosts to fight back in the closing stages.
Substitute Leon Bailey and Lars Bender scored in successive minutes to seal all three points for Leverkusen.
The victory for Peter Bosz’s side means they rise to fifth while Dortmund remain third – three points behind leaders Bayern Munich, who face second-placed RB Leipzig on Sunday.
The game set off at a frenetic pace and Erling Braut Haaland, who was making his first Bundesliga start for Dortmund, had already narrowly missed two chances when his side fell behind to Volland’s first of the game – a cool finish after being sent clear by Nadiem Amiri.
But Dortmund struck back almost immediately when Hummels headed home Jadon Sancho’s superb corner – the England forward’s 14th Bundesliga assist of the campaign.
Lucien Favre’s side then took the lead through Can’s fantastic, curling effort – his first Bundesliga goal since May 2014 – only for Volland to net his second of the game to restore parity shortly before half-time.
With his side chasing a win which would have put them level on points with reigning champions Bayern, Sancho then saw a goal ruled out by the video assistant referee for a foul in the build-up.
But Dortmund were not to be denied for long, as Guerreiro finished off a lightning counter-attack, slotting past Lukas Hradecky, after Kai Havertz had struck the post at the other end.
The away side then took control of the match after their third goal, consolidating possession and limiting their hosts to few chances, only for the game to burst into an explosive finale.
Leverkusen’s Jamaican forward Bailey had the ball in the net with his first touch after coming on in the 71st minute, only for it to be called offside by the on-field officials, but he soon drew his side level, calmly stroking home in the 81st minute after Hummels’ brilliant tackle fell to him in the box.
And just seconds later Leverkusen had their winner, as Bender rose highest to head Daley Sinkgraven’s cross past Roman Burki into the far corner to seal a memorable three points for his side.