Timo Werner returned to scoring form in style as RB Leipzig came from behind to claim their first ever Bundesliga victory over Bayern Munich, delaying the title-holders' seemingly inexorable march to retaining their crown.
Leipzig squandered a four-goal lead in the corresponding fixture last season, but it was the hosts who completed the comeback this time when Werner - an early substitute - put them ahead with a typically-composed finish on 56 minutes.
It was nothing less than Leipzig deserved, with Bayern goalkeeper Sven Ulreich having pulled off a string of superb saves prior to Naby Keita cancelling out Sandro Wagner's opener.
Bayern should have pulled level just after the hour mark, but Mats Hummels and Arturo Vidal both squandered gilt-edged opportunities.
However, it was not to be for the champions-elect, who will look to bounce back in Der Klassiker against Borussia Dortmund later this month.
Leipzig, meanwhile, have ended a run of four Bundesliga games without a win, and sit just two points behind fourth-placed Eintracht Frankfurt.
Hasenhuttl's decision to go with a three-man defence backfired on 12 minutes - James Rodriguez exploiting the space between Ibrahima Konate and auxiliary wing-back Bruma to deliver a pinpoint cross that Wagner duly headed home.
Bayern's lead would have been short lived if not for Ulreich, however, who charged out to deny Yussuf Poulsen with an excellent double save.
Werner - on in place of the injured Marcel Sabitzer - was the next to go close, as Niklas Sule cleared the former Stuttgart striker's looping header off the line.
Ulreich was in action again prior to the half hour - tipping over Bruma's dipping free-kick before keeping out Werner's strike from an acute angle.
Leipzig's dominance continued, Poulsen and Werner both failing to connect with Konrad Laimer's wicked cross, but the hosts' supremacy finally paid dividends in the 37th minute.
Having set up a chance for Werner, Keita reacted sharply to latch onto the rebound, making no mistake with an emphatic finish high into the net.
Leipzig remained in top gear after the restart - Bruma wastefully curling wide following good play from Kevin Kampl, but the hosts did not have to wait long for a second.
Keita was again involved as he found space in an advanced role and proceeded to thread a neat throughball into Werner who, having curved his run brilliantly to beat Bayern's offside trap, kept his cool to finish across Ulreich.
Werner could have doubled his tally on the hour, but the youngster only managed to find the side-netting after cutting inside from the left.
Bayern finally managed to create some chances a few moments later, Hummels forcing Peter Gulacsi into a terrific stop, before Vidal somehow headed over from point-blank range.
Bayern appealed for a penalty when the ball struck Stefan Ilsanker's arm late on, but referee Marco Fritz - after consultation with the VAR system - decided to stick with his initial decision not to award a spot-kick, as Jupp Heynckes' side slumped to just their third league defeat of the season.
Key Opta stats:
- In their fifth meeting in all competitions, Leipzig celebrate their first win against Bayern Munich (L3, D1) and snapped a four-game streak without a win in the Bundesliga.
- Bayern have conceded all four of their losses in all competitions this season away from home.
- For the first time since May 16 2015, Bayern have lost a Bundesliga match after leading. For Leipzig it was a league-best fourth win from behind this season.
- Timo Werner stopped his goalless run in the Bundesliga after 543 minutes and has now scored 11 goals this campaign.
- Sandro Wagner has now scored against 17 of the current 18 teams in the Bundesliga. Only against Eintracht Frankfurt has he gone scoreless in eight matches.
- Bayern had only one shot in the first half – a season low after having only two in the cup meeting in Leipzig earlier this season.