Hiroshi Kiyotake gave Hannover the lead, but that was cancelled out within minutes by Xabi Alonso.
Thomas Muller’s penalty put Bayern in front on the hour mark before he headed in a third to seal what was also Arjen Robben’s 100th win in 126 Bundesliga appearances for Bayern.
Wolfsburg harshly saw their slim title hopes begin to fade away after suffering their first defeat of 2015 away at Augsburg.
Dominik Kohr secured a 1-0 win for Augsburg, who strengthened their bid for a European place, while Dieter Hecking’s men may now concentrate on sealing Champions League qualification and progressing in the Europa League.
Roberto Di Matteo’s Schalke climbed to fourth – at least for 24 hours – after they banished their recent woes by beating Hoffenheim 3-1 at the Veltins-Arena.
Christian Fuchs gave Schalke the lead before Max Meyer grabbed a brace and Kevin Volland pulled one back for Hoffenheim.
Schalke had gone four games without a win in all competitions, but they are now up to fourth, although Bayer Leverkusen can usurp them if they beat Paderborn on Sunday.
Elsewhere, Franco Di Santo got Werder Bremen back on track with a 1-0 win over relegation-threatened Freiburg, while Borussia Dortmund’s recent revival hit the buffers as they were held to a goalless draw at Hamburg.
In the late game Mainz came from two goals down to snatch a point at home to Borussia Monchengladbach.
Two goals from Raffael appeared to be putting Lucien Favre’s men on their way to all three points, but Johannes Geis pulled one back for Martin Schmidt’s men and Shinji Okazaki headed home to make it 2-2.