Borussia Dortmund ended Bayern Munich's unbeaten run, edging a 1-0 win on Saturday thanks to Pierre-Emerick Aubameyang's 12th goal of the season, cutting the gap between the champions and their biggest title rivals to three points.
Gabon international Aubameyang made the most of Dortmund's frantic start, tapping in an 11th-minute assist from Mario Goetze, who was facing his former club for the first time since his move in the close season.
More than a quarter of the game had gone before Bayern, who drop to second in the Bundesliga, three points behind new leaders RB Leipzig, landed a shot on goal, but they were in command for the rest of the half, although they failed to beat keeper Roman Buerki.
They did put the ball in the net 10 minutes after the restart but Franck Ribery's clever flick was ruled offside.
Xabi Alonso then hammered his shot against the crossbar as Bayern upped the pressure, laying siege in the Dortmund half.
Aubameyang should have made it two for the hosts in the 71st when he pounced on an Alonso mistake and charged into the box, but Manuel Neuer stood his ground and palmed his shot wide.
Another gilt-edged opportunity fell to Polish striker Robert Lewandowski, whose shot went just wide of the mark.
Meanwhile, defender Mats Hummels, who returned to his Dortmund after a controversial summer move, was jeered throughout.
Dortmund, whose win was only their second in the last nine Bundesliga encounters against Bayern, move up to third on 21 points, six behind Leipzig, who won 3-2 at Bayer Leverkusen on Friday night.