Missing nine players through COVID-19 infections and more to Africa Cup of Nations duties and injuries, league leaders Bayern still easily bossed Gladbach around for some 30 minutes and took the lead through top scorer Robert Lewandowski in the 18th minute.
But the visitors sensationally struck twice with their first two chances of the game, with a Florian Neuhaus volley in the 27th minute and Stefan Lainer’s glancing header shortly after turning the game around.
Top scorer Lewandowski twice hit the woodwork as Bayern desperately pushed for an equaliser and missed a hatful of chances
Conditions were far from perfect for Bayern’s season restart, with no fans allowed in because of COVID-19 restrictions and a string of big-name absences including keeper Manuel Neuer, Lucas Hernandez, Leon Goretzka, Leroy Sane, Alphonso Davies and Kingsley Coman among others.
But they still enjoyed a strong start and Lewandowski, who came close in the 15th minute, was on target a little later with his 20th goal of the season, after he shook off his marker with a brilliant first touch and fired in with a powerful shot.
Bayern have now scored in each of their last 65 Bundesliga games, equalling the league record set by themselves in 2014.
But out of nowhere the visitors levelled with Neuhaus volleying in with the Bayern defence disorganised.
They then went ahead in the 31st minute when Stefan Lainer headed in from a corner, with Bayern’s backline again out of place.
Gladbach, who also crushed Bayern 5-0 in the German Cup in October, could have added a third with Neuhaus and Breel Embolo just before the break.
Lewandowski rattled the post with a shot in first-half stoppage time and then hit the crossbar just past the hour mark as the hosts pushed for an equaliser.
Running out of options from the bench, Bayern coach Julian Nagelsmann brought on Paul Wanner, who at 16 years and 16 days became the youngest Bayern player to make his Bundesliga debut, and 17-year-old Lucas Copado, but the champions could not find an equaliser.