Bayer Leverkusen struck a huge blow in the Bundesliga title race with an emphatic victory over Bayern Munich which sent them five points clear.
Xabi Alonso's side took the lead in the first half when Josip Stanisic finished clinically at the back post.
The BayArena erupted again shortly after the break when Alex Grimaldo fired in from a tight angle.
Jeremie Frimpong put the gloss on the result in injury time when goalkeeper Manuel Neuer went up for a corner.
Second-placed Bayern, the defending champions having won the past 11 Bundesliga titles, managed just a solitary shot on target as they were blown away.
Leverkusen's victory means they are now unbeaten in 31 matches in all competitions this season (won 27, drawn four).
Leverkusen fans start to dream
Bundesliga runners-up in 1996-97, 1998-99, 1999-2000, 2001-02 and 2010-11 and zero German top-flight titles to their name have led to a cruel moniker for the club in North Rhine-Westphalia.
'Neverkusen' in English, or 'Vizekusen' (second-kusen) in German. A club seemingly destined to always be the nearly men.
Their only major trophy was 31 years ago - the 1993 German Cup - yet in such a pivotal encounter there was no hint that history weighed on their shoulders.
The crowd might have been at fever pitch but this was a victory delivered with ice-cool precision, and tactical acumen, rather than one surfed on a wave of emotion.
The manner of their first two goals underlined that as Alonso's 3-4-3 formation, and buccaneering wing-backs, exploited Bayern's vulnerabilities in wide areas.
Stanisic's late run into the box at the back post went unchecked and he was able to get on the end of Robert Andrich's low cross to strike the ball high into the net.
When Bayern boss Thomas Tuchel sanctioned Stanisic's loan move to Leverkusen in August 2023 he probably did not have that outcome in mind.
Equally, Grimaldo's rampaging runs from wing-back enabled him to exchange a one-two with Nathan Tella before beating Neuer at his near post.
Frimpong added a third in injury time when he curled the ball into an empty Bayern net from out wide after Neuer had gone forward for a corner.
The Werkself are now just one game short of equalling the unbeaten record set by a Bundesliga club when Bayern went 32 without losing under Hansi Flick from 2019 to 2020.
No team has ever gone through an entire Bundesliga campaign unbeaten - Bayern lost just once in their title successes of 1986-87 and 2012-13.
Indeed, Arsenal, AC Milan and Juventus are the only teams to go a whole season - featuring a minimum of 34 games - unbeaten in one of Europe's top five leagues.
After this victory Leverkusen fans will be dreaming that anything is possible.
Quiet night for Kane as Bayern fall flat
For the first time in eight years, Bayern only managed one shot on target in a Bundesliga match.
This result was a bruise to the ego of a team used to being top dogs, as much as to their points total.
There's still a long way to go this season and it is difficult to envisage the 33-time Bundesliga winners throwing in the towel just yet allowing Leverkusen to canter home.
However, a subdued performance by his players must be a concern for Bayern boss Tuchel, along with how he was tactically outwitted by his Bayer counterpart Alonso.
It was also a quiet display from Bundesliga top scorer Harry Kane, with the England captain a peripheral figure for much of the match.
Kane had 18 touches against Leverkusen but no shots on target and no chances created.
After leaving Tottenham in search of trophies he will not want to finish his first season in Germany without a winner's medal.
- 1HrádeckyBooked at 83mins
- 12TapsobaBooked at 64mins
- 20GrimaldoSubstituted forPuertaat 90'minutes
- 19TellaSubstituted forFrimpongat 65'minutes
- 10WirtzSubstituted forHlozekat 90'minutes
- 21AdliBooked at 77minsSubstituted forHofmannat 82'minutes
- 2UpamecanoSubstituted forKimmichat 60'minutes
- 3Kim Min-jae
- 45PavlovicSubstituted forMüllerat 60'minutes
- 8GoretzkaBooked at 62minsSubstituted forTelat 71'minutes
- 23BoeyBooked at 36minsSubstituted forGuerreiroat 81'minutes
- 42MusialaSubstituted forChoupo-Motingat 81'minutes
- 4de Ligt
Match ends, Bayer 04 Leverkusen 3, FC Bayern München 0.
Second Half ends, Bayer 04 Leverkusen 3, FC Bayern München 0.
Goal! Bayer 04 Leverkusen 3, FC Bayern München 0. Jeremie Frimpong (Bayer 04 Leverkusen) right footed shot from long range on the right to the bottom right corner. Assisted by Edmond Tapsoba following a fast break.
Corner, FC Bayern München. Conceded by Josip Stanisic.
Eric Choupo-Moting (FC Bayern München) wins a free kick in the attacking half.
Foul by Gustavo Puerta (Bayer 04 Leverkusen).
Harry Kane (FC Bayern München) wins a free kick in the attacking half.
Foul by Robert Andrich (Bayer 04 Leverkusen).
Foul by Eric Dier (FC Bayern München).
Piero Hincapié (Bayer 04 Leverkusen) wins a free kick in the defensive half.
Substitution, Bayer 04 Leverkusen. Adam Hlozek replaces Florian Wirtz.
Substitution, Bayer 04 Leverkusen. Gustavo Puerta replaces Álex Grimaldo.
Offside, Bayer 04 Leverkusen. Jeremie Frimpong is caught offside.
Corner, Bayer 04 Leverkusen. Conceded by Joshua Kimmich.
Attempt blocked. Jeremie Frimpong (Bayer 04 Leverkusen) right footed shot from the right side of the box is blocked.
Offside, FC Bayern München. Joshua Kimmich is caught offside.
Attempt missed. Mathys Tel (FC Bayern München) right footed shot from outside the box misses to the right following a corner.
Corner, FC Bayern München. Conceded by Álex Grimaldo.
Lukás Hrádecky (Bayer 04 Leverkusen) is shown the yellow card.
Substitution, Bayer 04 Leverkusen. Jonas Hofmann replaces Amine Adli.