Toni Kroos opened the scoring for Bayern in the 36th minute and substitute Mario Gomez made it 2-0 after 68 minutes.

Didier Ya Konan hit Hannover's reply in the 74th minute, but Bayern held on for a win which moved them to within two points of Dortmund, who have a game in hand.

Klaas Jan Huntelaar scored twice as Schalke beat Bayer Leverkusen 2-0 and go up to third.

A header from each half from the Holland striker condemned the visitors to a fourth straight defeat as the Royal Blues leapfrogged Borussia Monchengladbach to move closer towards Champions League qualification.

Gladbach slipped two points behind Schalke as they lost for the first time at home this season, going down 2-1 to Hoffenheim.

Just days after losing on penalties to Bayern in the DFB-Pokal semi-finals, the hosts took the lead through Marco Reus in the 38th minute.

But Roberto Firmino equalised for Hoffenheim after 77 minutes and Boris Vukcevic scored the winner two minutes later.

At the other end of the table, Adrian Ramos scored twice as Hertha Berlin boosted their survival hopes with a 3-1 win at Mainz.

Anis Ben-Hatira put Hertha in front in the 41st minute before Ramos doubled the advantage after 52 minutes.

Eric Maxim Choupo-Moting halved the deficit in the 58th minute, but Ramos struck again in the 69th minute.

The win moved the capital club, who are second bottom, to within a point of safety.

And it lifted them six points ahead of basement boys Kaiserslautern, who conceded twice in the opening 14 minutes at Freiburg as new coach Krassimir Balakov's reign started with a 2-0 defeat.

Karim Guede opened the scoring for Freiburg in the eighth minute and Cedrick Makiadi doubled the lead six minutes later.

The win lifted Freiburg a point clear of danger, but left the visitors, who have now not won in 17 games, seven points from safety.

A dramatic last-minute goal from Paul Verhaegh earned another relegation-threatened side, Augsburg, a 1-1 draw against Werder Bremen.

Niclas Fullkrug had Bremen put in front after an hour.