Bayern Munich's winning start in the Bundesliga in Jupp Heynckes' fourth stint in charge came to an end as they slumped to a 2-1 defeat at in-form Borussia Monchengladbach.
Prior to Saturday's encounter with his former club Heynckes – Gladbach's record Bundesliga goalscorer – had won all five of his top-flight fixtures since taking over from Carlo Ancelotti.
However, Bayern never really got going in a low-key first half, with quick-fire goals from Thorgan Hazard – who converted from the spot after 39 minutes – and Matthias Ginter putting Gladbach in control at the interval.
Robert Lewandowski had struck the post before Ginter's goal and the Poland striker would have pulled one back for Bayern after the break if not for a series of crucial interventions from the excellent Jannik Vestergaard.
The upright again came to Gladbach's rescue when Kingsley Coman tried his luck from the edge of the area, before Artuto Vidal finally punctured the hosts' stubborn defence to set up a grandstand finish.
Bayern failed to build on that goal, with Gladbach holding out to seal the victory and consolidate their place in the top four, while the visitors' lead at the summit over RB Leipzig – who beat Werder Bremen – is now just three points.
Gladbach were handed a blow early on when Christoph Kramer collided heavily with Vestergaard, forcing Dieter Hecking into a change.
Despite their bad luck, Gladbach should have been ahead when Raffael stole in behind Bayern's defence, only to fluff his lines when one-on-one with Sven Ulreich.
Shorn of the injured Arjen Robben, Bayern lacked pace down the flanks, although strong play from James Rodriguez just prior to the half-hour mark resulted in Bayern's first meaningful effort – Sebastian Rudy forcing Yann Sommer into action.
That was all Bayern could muster, though, and their poor performance was soon punished when Hazard drew a handball from Niklas Sule in the visitors' area – Gladbach's number 10 duly stepping up to place his strike into the bottom-left corner despite Ulreich's best efforts.
A moment of inspiration from Lewandowski looked set to restore parity inside five minutes, but the striker's superb back-heel deflected agonisingly away off the woodwork.
Bayern were swiftly made to pay for that miss, Lars Stindl forcing his way through their defence before teeing up Ginter, who was presented with a simple finish.
Lewandowski would have been in on goal again after the restart, if not for a vital interception from Vestergaard, who reacted sharply to cut out Joshua Kimmich's cross.
Vestergaard was at his best again just before the hour, getting across to block Lewandowski's snapshot.
Gladbach's Danish defender could well have scored an own goal moments later when he forced Kimmich's cross just wide of the upright, Sommer on hand to deny Mats Hummels from the resulting corner.
Bayern continued their barrage on Gladbach's goal – Sommer getting some help from the frame of his goal as he tipped Coman's low strike onto the woodwork, managing to recover before the ball spun over the line.
Sommer had no such luck in the 74th minute, however, with the goalkeeper only able to help Vidal's powerful low strike into the right-hand corner.
Josip Drmic squandered a brilliant opportunity to make it 3-1 in stoppage time at the culmination of a rapid counter-attack, before Bayern's Kwasi Okyere Wriedt saw an effort blocked on the line as Gladbach held firm to secure the points.
Key Opta facts:
- Matthias Ginter and Oscar Wendt each made their 150th appearance in Bundesliga.
- For the first time since his transfer to Bayern Munich in 2012, Javi Martinez was captain at the start of a competitive game.
- Ginter has scored three Bundesliga goals this season – equalling his personal record with Borussia Dortmund 2015-16.
- Since the start of the 2011-12 season, Borussia Monchengladbach have beaten Bayern five times in Bundesliga – more often than any other team.