League leader Bayern Munich had to come from behind to win and stretch its unbeaten league run to 35 games, while being grateful not to concede a penalty in injury time. Hertha Berlin protested when Adrian Ramos fell under last defender David Alaba's challenge on the edge of the box.
Ramos had scored with a header from Per Ciljan Skjelbred's corner in the fourth minute, and Hertha might have been 2-0 shortly afterward, when Anis Ben-Hatira struck the crossbar.
There was more bad news for Bayern when Toni Kroos and Arjen Robben both went off with groin problems within two minutes of each other. But the substitutes, Mario Goetze and Mario Mandzukic, managed to turn the game around.
''The changes decided the game,'' Hertha coach Jos Luhukay said.
Mandzukic scored in the 29th, three minutes after going on, with a header from Franck Ribery's free kick.
Then Bastian Schweinsteiger sent in another free kick for the Croat to score a second with another header in the 51st.
Goetze made it 3-1 with a header three minutes later, four minutes before Ben-Hatira pulled back what proved to be a consolation for the promoted side, one of the few not to appear intimidated in Munich this season.
''Berlin were the best team we've faced,'' Bayern coach Pep Guardiola said. ''For us, the will was there, but our legs didn't function well. The players need time to relax, they were tired. Now that we have a whole week (without European or German Cup games) we can better implement our ideas.''
Ribery set a Bundesliga record of playing in 39 straight games without defeat, breaking Holger Hieronymus' 30-year-old record set while playing for Hamburger SV, while Bayern is just one game from tying Hamburg's record 36-match run without losing.
Bayer Leverkusen also came from behind to beat Augsburg 2-1. Andre Hahn put the visiting side ahead with a fine volley in the 24th, only for Simon Rolfes to equalize in the 34th, and Emre Can to pop up with the winner eight minutes from time.
''The team fought against the tiredness and were rewarded in the end,'' said Leverkusen coach Sami Hyppia, referring to his side's 4-0 Champions League win over Shakhtar Donetsk on Wednesday.
Hoffenheim striker Sejad Salihovic scored after a hotly disputed penalty decision in the 10th.
Mame Biram Diouf was shown a yellow card for protesting, and the Senegalese was sent off two minutes later when he got another yellow for diving. TV replays showed it was a debatable decision.
It got worse for the home side six minutes later when Kai Herdling scored with a header.
Salif Sane gave Hannover some hope in the 56th, only for Roberto Firmino to score twice in three minutes by the 64th, when Marcelo was sent off for his furious reaction to the referee.
''We have to keep our tempers better under control. We have to talk about that,'' said Hannover coach Mirko Slomka.