Bundesliga Wrap: Derby win for Dortmund
Jurgen Klopp's team found themselves in unlikely relegation trouble a month ago but their fourth consecutive league victory moves them up to 10th in the standings - just eight points adrift of the fourth UEFA Champions League qualification spot.
Dortmund controlled the 146th Revierderby for long periods but had to wait until 12 minutes from time for Pierre-Emerick Aubameyang to open the scoring - the Gabon international then producing Batman and Robin masks for himself and Marco Reus to embark upon a memorable celebration.
Henrikh Mkhitaryan was on target from Ikay Gundogan's cross soon after, and an error from Schalke's otherwise-impressive rookie goalkeeper Timon Wellenreuther allowed Reus to complete the scoring.
Derby disappointment for Schalke, combined with a late Salomon Kalou winner condemning Aubsburg to a 1-0 loss at Hertha Berlin, allowed Bayer Leverkusen to move up to fourth.
Midfielder Simon Rolfes converted Karim Bellarabi’s low cross to score the only goal of the game against lowly Freiburg in the 33rd minute.
Basement boys Stuttgart edged closer to Freiburg immediately above them by sharing a 1-1 draw with Hannover.
Christian Gentner moved Stuttgart towards the victory their survival prospects desperately needed but Lars Stindl produced a calm finish to bring the hosts level.
Stindl could not extend such coolness to a late altercation with Martin Harnik that saw both players sent off.
Hamburg are perched a point and a place above the bottom three after Alexander Meier scored a goal in each half to guide Eintracht Frankfurt to a 2-1 win.
Zoltan Stieber equalised before half time for Hamburg but the away team were forced to struggle along with 10 men after Matthias Ostrzolek was shown a red card.
Eintracht lie eighth - a place below Hoffenheim, who were 2-0 winners over Mainz.
Goals from Kevin Volland and Eugen Polanski meant a first defeat for Martin Schmidt as Mainz coach.