Bundesliga leaders Borussia Dortmund suffered their second defeat of the season as Hannover won a thrilling contest 4-2 at the HDI-Arena.
Jonathas gave the home side the lead from the penalty spot after 20 minutes and set up Ihlas Bebou for the second after defender Dan-Axel Zagadou had volleyed an equaliser.
Andriy Yarmolenko made it 2-2 early in the second half before Zagadou was sent off for bringing down Jonathas and Hannover quickly made their extra man count as Felix Klaus curled home a superb free kick.
Bebou scored his second of the game four minutes from time to make certain of the three points.
The result means Dortmund have now taken just one point from their last three Bundesliga games.
Hoffenheim missed out on the chance to close within a point of Dortmund as they went down to a 3-1 home defeat at the hands of Borussia Monchengladbach.
Kerem Demirbay gave Hoffenheim the lead after 25 minutes but the visitors turned the match on its head in the second half with goals from Thorgan Hazard, Matthias Ginter and Jannik Vestergaard.
It was a similar story at the BayArena as Bayer Leverkusen beat Cologne 2-1 after the visitors had taken a 23rd-minute lead through Sehrou Guirassy.
Leon Bailey equalised early in the second half and Sven Bender scored what proved to be the winner in the 74th minute.
Hamburg remained in the bottom three after losing 2-1 at Hertha Berlin, who took the lead in the 17th minute through Niklas Stark.
Karim Rekik doubled the home side's lead five minutes into the second half, with Jann-Fiete Arp pulling a goal back for the visitors.
Wolfsburg snatched a dramatic point at Schalke as on-loan striker Divock Origi equalised in the third minute of added time to cancel out Nabil Bentaleb's 43rd-minute penalty.