Bayer Leverkusen missed a chance to pull within nine points of Bundesliga leaders Borussia Dortmund by losing at ten-man Nurnberg.
Christian Eigler scored the only goal of the game in the 60th minute but did not make things easy for Nurnberg in the end by getting sent off in the 86th minute for a second yellow card.
Cologne overturned a two-goal deficit to beat Bayern Munich 3-2 and boost their hopes of avoiding relegation in dramatic style at the Mungersdorfer Stadion. Goals from Mario Gomez and Hamit Altintop put Bayern firmly in the driving seat, but the league's strugglers completed a sensational turnaround in the second half.
Christian Clemens brought them back into the game in the 55th minute before two goals in ten minutes from Milivoje Novakovic earned Frank Schafer's side their second win in three games.
Stuttgart also recovered from a two-goal deficit to win at ten-man Borussia Monchengladbach and collect their first away victory of the season in this relegation battle.
Dante gave Gladbach the lead after 29 minutes and the advantage was 2-0 in the 31st minute after Igor de Camargo's goal. Pavel Pogrebnyak cut the deficit to 2-1 and Martin Harnik tied the game after 56 minutes. Dante was sent off in the 87th minute after a second yellow card before Timo Gebhart converted a penalty.
Claudio Pizarro scored two minutes into stoppage time to salvage a point in Werder Bremen's fight to stay clear of the relegation zone in a 1-1 draw at Mainz. Andre Schurrle gave Mainz the lead after 19 minutes before Pizarro scored Werder's first Bundesliga away goal since 23 October last year.
Ten-man Hoffenheim almost wasted a two-goal lead but held on to beat Kaiserslautern 3-2 at home to remain in the running for European football next season. Hoffenheim grabbed a 2-0 lead in the first half courtesy of goals from Gylfi Thor Sigurdsson and Sebastian Rudy. Erwin Hoffer and Rodnei scored within 96 seconds of each other to pull level but Hoffenheim bounced back and won the game through Vedad Ibisevic's goal in the 62nd minute.
Sergio Pinto's early goal was enough to secure victory for Hannover over Wolfsburg and keep his side in contention for European football. Pinto scored the only goal of the game in the fifth minute, with Diego's 80th-minute penalty miss proving costly for Wolfsburg.