Dortmund and Bayern draw
Jakub Blaszczykowski rescued a 1-1 draw for Borussia Dortmund in stoppage time at Hamburg as the visitors moved eight clear at the top of the Bundesliga.
Ruud van Nistelrooy's 39th-minute penalty put Michael Oenning's side in front, but they were reduced to 10 men for the final 12 minutes when Anis Ben-Hatira was shown his second yellow card.
Dortmund laid siege to the Hamburg goal and were rewarded in the second minute of stoppage time when Blaszczykowski struck a goal which takes his side a step closer to the title.
Bayern Munich lost their grip on third place and the final Champions League qualification berth with a 1-1 draw at local rivals Nurnberg.
Thomas Muller gave Bayern the lead after just five minutes but a bad mistake by the visiting goalkeeper Thomas Kraft led to Christian Eigler equalising after an hour.
A goal from Jose Manuel Jurado made it a return to forget for Wolfsburg coach Felix Magath as his new side was beaten 1-0 by his former employers at Schalke.
Just over three weeks after sitting on the home team's bench in Gelsenkirchen, Magath took his place in the opposite dugout and saw a result he had grown a bit too familiar with while in charge of the Royal Blues - a defeat.
Hannover remained in the running for a spot in the Champions League and continued their superb form at home with a strong 2-0 victory against ten-man Mainz.
Didier Ya Konan gave Hannover the lead from the penalty spot a minute into first-half stoppage time after Mainz defender Nikolce Noveski was given his marching orders for a foul in the area. Sergio Pinto made it 2-0 after 59 minutes.
Julian Schuster scored a goal and set up another as ten-man Freiburg came back to beat Hoffenheim 3-2 in a thrilling Bundesliga encounter.
Schuster gave Freiburg the lead straight from a corner after 24 minutes but the hosts had Pavel Krmas dismissed ten minutes later. Vedad Ibisevic converted the resulting penalty and Ryan Babel made it 2-1 for Hoffenheim after 42 minutes.
Papiss Demba Cisse scored a penalty to level matters after an hour and Heiko Butscher added a third 12 minutes from time as Freiburg claimed all three points.
Kaiserslautern took a big step towards survival as they came from behind to win 4-2 at Stuttgart, Srdjan Lakic scoring twice.
Lakic gave the visitors the lead in the 17th minute, but Zdravko Kuzmanovic equalised from the penalty spot in the 26th minute and Pavel Pogrebnyak made it 2-1 for Stuttgart.
Erwin Hoffer levelled in the 68th minute before Lakic made it 3-2 and Stiven Rivic sealed victory for the visitors with four minutes left. The win moved Kaiserslautern six points clear of the bottom three but kept Stuttgart just two points above the drop zone.