First half goals by Vedad Ibisevic and Ondrej Duda stunned the league leaders as Hertha moved level on points with their opponents.
Despite raising their intensity in the second period, Bayern could not break down opponents that were full value for victory.
Former Bayern player Thomas Kraft started in goal for Hertha as replacement for Rune Jarstein, who suffered a leg injury during the 3-1 defeat against Werder Bremen on Tuesday, while Bayern welcomed back James Rodriguez and Robert Lewandowski to their starting XI, with Jerome Boateng and Niklas Sule the preferred centre-backs.
Bayern, unbeaten in the last 14 games against their hosts, looked to settle quickly, but Hertha made a brighter start when Salomon Kalou and Ibisevic combined well before Boateng cleared any danger.
Lewandowski was Bayern’s most potent threat during the initial flurries, and the close attention Hertha afforded him was underlined when Karim Rekik brought him down, before Boateng sent a header wide following a pinpoint Rodriguez cross.
Franck Ribery’s busy work in the attacking third was underlined when he linked well with Lewandowski, but the Polish international’s header did not force Kraft into a save as Bayern began forcing the pace.
All that promise from the visitors, though, was undone when they conceded a 22nd-minute penalty.
Boateng was adjudged to have fouled Kalou inside the box following a brilliant save by Bayern goalkeeper Manuel Neuer, and Ibisevic stepped up to calmly slot the ball home and put his team in front.
Bayern, having only drawn at home with Augsburg in midweek, were rocked on their heels by falling behind, although Joshua Kimmich then reminded Hertha that they could not switch off when his shot hit the side netting.
Hertha, though, were buoyed by their goal, and it could have have got worse for Bayern when Niklas Stark was left unmarked inside their box, but his header sailed over the bar.
But they did not have to wait much longer to double their advantage, going 2-0 up a minute before half time.
Kalou found Valentino Lazaro with a perfectly-timed pass and when the ball reached Duda, his first-time shot left Neuer with no chance, giving Bayern had a mountain to climb in the second period.
Bayern’s first substitution came just seven minutes into the second half when Thomas Muller replaced Arjen Robben but, despite Bayern scrambling to get back into the contest, Hertha did not appear under any major threat.
Despite Kraft being kept busier than he had been in the first 45 minutes, then was an increasing desperation about Bayern’s play, and Hertha retained their healthy advantage moving into the closing 15 minutes.
Bayern’s frustration was clearly visible at times, and they could find no way through a Hertha side that impressively consolidated their two-goal advantage.