Hannover became only the second side to beat Bayern Munich this season with a 2-1 win at the Niedersachsen Stadion.
Mohammed Abdellaoue put the Reds in front from the penalty spot in the 23rd minute and Bayern were reduced to ten men five minutes later when Jerome Boateng was sent off. An own goal from Luiz Gustavo doubled Hannover's lead in the 50th minute while they too lost a man as Steven Cherundolo was dismissed in the 63rd minute.
David Alaba reduced the arrears seven minutes from time and Bastian Schweinsteiger hit the post in a dramatic conclusion to the match, but Hannover held on for a win which lifts them up to fourth in the Bundesliga.
In Sunday's other game, a late goal from Jefferson Farfan earned Schalke a 1-0 win against Bayer Leverkusen and took them up to third in the table.
Farfan struck in the 82nd minute of a tight derby match at the BayArena to take the Royal Blues to within four points of league leaders Bayern Munich, and just one adrift of their local rivals Borussia Dortmund.
Leverkusen were unable to build on their impressive 2-1 Europa League win over Valencia in midweek and this latest defeat will only revive criticism of their coach Robin Dutt, whose side remain in mid-table.