Borussia Dortmund needed an injury time goal from substitute Jakub Blaszczykowski to earn a 1-1 draw at 10-man Hamburger SV on Saturday and remain on course for the Bundesliga title.
"We had to fight hard to tie the match. We really applied pressure in the second half, not only when they left with 10 men," said Dortmund coach Juergen Klopp, whose team twice hit the frame of the goal. "The important thing was not to leave empty-handed."
Hannover beat Mainz 2-0 to move back into third place ahead of Bayern Munich, which squandered an early lead and had to settle for a 1-1 draw at Nuremberg after a mistake by goalkeeper Thomas Kraft.
Felix Magath's return to Gelsenkirchen turned sour when his Wolfsburg lost 1-0 to Schalke on a second-half goal by Jose Manuel Jurado. Ten-man Freiburg beat Hoffenheim 3-2.
Stuttgart played Kaiserslautern in the late match.
In Hamburg, the home side took the lead in the 39th minute when Ruud van Nistelrooy converted a penalty that Mladen Petric earned when he was downed by Mats Hummels.
Dortmund kept pressing after the break and Slobodan Kacar made a stunning clearance on the line to deny Dortmund teenager Mario Goetze's flick from a meter (yard) out.
Lukasz Piszczek hit the post and Lucas Barrios struck the crossbar before limping off with a hamstring injury.
Anis Ben-Hatira was sent off in the 78th for a rough tackle on Marcel Schmelzer and Dortmund finally found the opening it needed two minutes into stoppage time, with Blaszczykowski driving home a volley at the fast post.
One year after barely escaping relegation, Hannover could finish third to earn a spot in the qualifying stage of the Champions League. Already enjoying its best season in the Bundesliga, Hannover got goals from Didier Ya Konan and Sergio Pinto to move one point clear of Bayern with the win over 10-man Mainz, whose defender and captain Nikolce Noveski was sent off just before halftime.
Bayern got off to a strong start in the Bavarian derby and Thomas Mueller put the visitors ahead after five minutes.
Javier Pinola lost the ball near the midfield circle, and Arjen Robben sent a perfect through pass for Mueller to knock home.
But Bayern had to settle for the draw when Kraft made a big mistake in the 60th minute, needlessly leaving his goal. Christian Eigler hooked the loose ball into the empty net.
"When we make such mistakes, we don't deserve to win," Bayern midfielder Bastian Schweinsteiger said.
Coach Louis van Gaal, who is leaving Bayern at the end of the season, could not hide his disappointment.
Mario Gomez missed a point-blank chance late in the match and was passed in the scorers' list by Freiburg's Papiss Demba Cisse, who had two strikes ruled out for offside before converting a penalty for his league-high 20th goal of the season.
Freiburg lost Pavel Krmas to a red card in the 33rd minute but still prevailed over Hoffenheim.
Julian Schuster scored directly from a corner before Vedad Ibisevic equalized from the penalty spot after Krmas' ejection. Ryan Babel put Hoffenheim ahead before Cisse tied the match and captain Heiko Butscher clinched the win, knocking the ball in with his back to the net after a free-kick cross.
Magath, who was fired by Schalke three weeks ago, got an indifferent reception in Gelsenkirchen and could have lost by a bigger margin but Alex Baumjohann's deflected shot hit the crossbar.
"I have to be worried after this loss, we played well in the defense but we did not create many chances," said Magath, who led Wolfsburg to the championship in 2009 but is now fighting against relegation in his second stint at the club.
Wolfsburg is third from last, which means a relegation playoff.