Bundesliga wrap: Haaland hits Schalke where it hurts
Erling Haaland netted his 23rd goal in 26 games since his move to Borussia Dortmund as his side extended Schalke's miserable record to 21 Bundesliga games without a win.
Dortmund bounced back from its 3-1 UEFA Champions League defeat in mid-week at Lazio with an impressive display in the Revierderby, winning 3-0 at Signal Iduna Park.
Dortmund centre-back Manuel Akanji, back in the side after recovering from coronavirus, opened the scoring on 55 minutes when he rifled home a rebound.
Haaland put the result beyond doubt with a superb chip over Schalke goalkeeper Frederik Ronnow on 61 minutes after staying on his feet despite a defender's lunging challenge.
Mats Hummels struck with a powerful header from a corner 12 minutes from time, drawing Dortmund level on points with Bayern Munich after its win over Eintracht Frankfurt earlier in the day.
Both sides remain one point behind leader RB Leipzig, which came from behind in a 2-1 win over Hertha Berlin.
Hertha went ahead through Colombian striker Jhon Cordoba, who scored in the eighth minute of the match.
Leipzig drew level when defender Dayot Upamecano fired home from a free-kick on 11 minutes.
Berlin was then reduced to 10 men after the break when substitute Deyovaisio Zeefuik was shown two yellow cards within four minutes of coming on.
Leipzig made the man advantage count when Marcel Sabitzer converted a penalty with 13 minutes left.
Hertha was lucky not to finish with nine men when another substitute, Jessic Ngankam, scythed down Leipzig left-back Angelino and the referee changed his decision to a yellow card having initially shown a red.
Borussia Moenchengladbach warmed up for Wednesday's (AEDT) UEFA Champions League game at home to Real Madrid with a 3-2 comeback win at Mainz.
Germany midfielder Lars Stindl gave Gladbach an early lead, but the visitors were 2-1 down at half-time after French striker Jean-Philippe Mateta scored twice for Mainz.
Gladbach midfielder Jonas Hofmann converted a penalty on 76 minutes before Matthias Ginter headed the winner as Gladbach climbed to fifth.
Union Berlin drew 1-1 at home against Freiburg as Vincenzo Grifo's first-half goal was cancelled out two minutes later by Union midfielder Robert Andrich.