Nuremberg climbed out of the Bundesliga relegation zone with a surprise win away at Bayer Leverkusen, whilst Dortmund kept the pressure on Bayern Munich at the top.
Nuremberg had won only one of their last six games but recorded a shock 3-0 win at Leverkusen.
Daniel Didavi put the visitors ahead after just eight minutes and Jens Hegeler doubled their advantage in the 22nd minute. Tomas Pekhart headed home a third in the 73rd minute.
Borussia Dortmund stayed within three points of Bayern Munich with a comfortable win 4-1 win at bottom club SC Freiburg.
Robert Lewandowski put The Borussians ahead after just seven minutes, but Jan Rosenthal equalised in the 34 minute. Ilkay Gundogan restored the visitors' advantage just before half-time and Kevin Gorsskreutz made sure of the points on the hour mark before Lewandowski grabbed his second 10 minutes later.
Schalke thumped Werder Bremen 5-0 at the Veltins Arena.
Raul put the hosts ahead after 16 minutes, before netting a second just four minutes later. He completed his hat-trick in the 63rd minute.
Kyriakos Papadopoulous made it four on 67 minutes before Klaas-Jan Huntelaar added a fifth three minutes later.
Hoffenheim moved up to ninth after a 1-1 draw in an ill-tempered match with Hertha Berlin.
Sejad Salihovic grabbed the game's only goal in the 21st minute with a left-footed drive from outside the box.
Hertha were reduced to 10 men in the 31st minute when Brazilian forward Raffael was dismissed for fighting after being fouled by Sejad Salihovic.
The numbers were evened when the hosts had Isaac Vorsah dismissed for a professional foul in the 63rd minute.
Czech defender Roman Hubnik grabbed an equaliser for the visitors in stoppage time.
Wolfsburg leapt up the table with a 1-0 home win against Stuttgart.
The deadlock was finally broken in the 74th minute when sub Sebastian Polter netted just six minutes after coming on.
Hamburg and FC Augsburg shared the points at the Imtech Arena after a 1-1 draw.
Torsten Oehri put the visitors ahead in the 63rd minute, but Pailo Guerrero equalised just three minutes later.