Bayern Munich can take a huge step to reclaiming their Bundesliga title against FSV Mainz following Hamburg's 2-0 loss to Bayer Leverkusen.
Hamburg began the day trailing Bayern by four points, but that gap could be seven with three games to play should the league leaders win on Sunday.
Simon Rofles netted early for Bayer, although it was not until late on did Paul Freier confirm the destination of the points with a second.
At the bottom of the table, Kaiserslautern and Cologne bolstered their prospects of avoiding the drop with home wins.
Daniel Halsen's strike before half time bagged the points for the Red Devils against Hannover while Cologne have left MSV Duisburg requiring a miracle to survive.
Goals either side of half time from Albert Streit and Markus Feulner put the home side in control before Abdelaiziz Ahanfouf pulled one back.
However, Lukas Podolski's strike just a minute later ensured Duisburg require maximum points from their remaining three games to stand a chance of avoiding the drop.
Hertha Berlin twice came from a goal down to claim a 2-2 draw at Borussia Monchengladbach.
Sofian Chahed's own goal put the home side in front only for Yildiray Basturk to level matters six minutes later.
Thomas Broich thought he had netted the winner after 82 minutes although there was still time for Niko Kovac to claim a late share of the spoils.
Wolfsburg stay above Kaiserslautern in the table as Miroslav Karhan's penalty on the stroke of half time secured a 1-0 win at Arminia Bielefeld.
Florian Kringe netted a brace as Borussia Dortmund beat Nurnberg 2-1. Marek Nikl levelled matters on 29 minutes, but it was a temporary reprieve.
Stuttgart's hopes of claiming a Uefa Cup place have been hindered after going down 2-0 to struggling Eintracht Frankfurt.
Two goals in the space of four second half minutes from Alexander Meier and Ioannis Amanatidis secured the points for the visitors.
Arminia Bielefeld 0-1 Wolfsburg
Borussia Dortmund 2-1 Nurnberg
Borussia Monchengladbach 2-2 Hertha Berlin
Cologne 3-1 MSV Duisburg
Hamburg 0-2 Bayer Leverkusen
Kaiserslautern 1-0 Hannover
Stuttgart 0-2 Eintracht Frankfurt