Hannover hit Bayer Leverkusen's hopes of keeping pace with Bundesliga leaders Bayern Munich as Szabolcs Hustzi scored two penalties to secure a narrow 3-2 victory for the hosts.
Leverkusen went ahead after two minutes through Gonzalo Castro but Huszti equalised from the spot in the 20th minute.
Mame Biram Diouf gave Hannover the lead 2-1 in the 57th minute before Stefan Kiessling levelled 60 seconds later, but Huszti converted another penalty in the 69th minute.
The result ended Leverkusen's four-match winning run and left them 11 points behind runaway leaders Bayern.
Two goals within five minutes were enough for Borussia Monchengladbach to win 2-0 at home against Mainz and move closer to the European places.
Mike Hanke scored in the 58th minute and Juan Arango netted a memorable goal in the 63rd to decide the contest.
Hanke turned home Tony Jantschke's cross before Arango collected a clearance from outrushing Mainz keeper Heinz Muller and flighted the ball back over the keeper and in from 45 yards.
Information from Press Association was used in this report.