Red card: Aubameyang (72')
Dortmund went into the game without a win in five and opponents Schalke unbeaten in six, but Peter Bosz's under-fire troupe tore up the script in a blistering first half. Pierre-Emerick Aubameyang bundled in the opening goal from close range after fine work from the returning Christian Pulisic, celebrating his 50th Bundesliga appearance. Benjamin Stambouli inadvertently turned a Nuri Sahin free-kick into his own net as the floodgates opened, with Mario Götze's downward header and Raphael Guerreiro's deflected volley completing a miserable opening 25 minutes for the visiting Royal Blues.
Down but not out, the 34th-minute introduction of Leon Goretzka - making his 100th Bundesliga appearance - gave Schalke a much-needed lift. The Germany international headed agonisingly over at the start of the restart, before Naldo had a goal ruled out for offside. Dortmund failed to heed the warning, however, as quick-fire goals from Guido Burgstaller and Amine Harit reduced the arrears to 4-2. Worse was to come for BVB when Aubameyang was sent off for his second-bookable offence with 18 minutes of normal time remaining. Roman Weidenfeller pushed a Burgstaller header onto the woodwork as Schalke turned the screw, but was powerless to prevent Daniel Caligiuri powering in Schalke's third with only five minutes left on the clock. The comeback was complete when Naldo levelled deep into added time.
Man of the match
One of three inspired Domenico Tedesco changes, Harit gave Schalke an attacking purpose absent for much of the first half. The Morocco international scored the Royal Blues' second, and encapsulated the spirit of the side by returning to the pitch prior to their third, having trudged off injured moments before.
- Schalke are the first Bundesliga to come back from 4-0 down since Bayern Munich in September 1976, in a 6-5 win over Bochum.
- BVB front man Aubameyang ended a run of 307 minutes without a Bundesliga goal. It was his sixth strike in nine Revierderby meetings.
- Aubameyang joins former Eintracht Frankfurt and Hamburg striker Anthony Yeboah as the Bundesliga's all-time leading African marksman on 96 goals.
- Pulisic, 19, became the youngest Dortmund player and youngest non-German in history to reach 50 Bundesliga appearances.
- Dortmund scored four first-half goals for the first time since April 2013.
- Amine Harit scored his first Bundesliga goal.
Dortmund: Weidenfeller - Sokratis, Toprak, Schmelzer (c) - Weigl, Sahin, Guerreiro (Zagadou 83') - Yarmolenko (Bartra 69'), Götze (Castro 77'), Pulisic - Aubameyang
Substitutes: Reimann, Zagadou, Bartra, Philipp, Schürrle, Kagawa, Castro
Absentees: Reus (knee), Piszczek (knee), Durm (hip), Rode (pubic bone)
Coach: Peter Bosz
Schalke: Fährmann (c) - Kehrer (Nastasic 46'), Stambouli, Naldo, Oczipka - Caligiuri, Meyer, McKennie (Goretzka 34'), Konoplyanka - Burgstaller, Di Santo (Harit 34')
Substitutes: Nübel, Nastasic, Goretzka, Coke, Harit, Schöpf, Embolo
Absentees: Insua (pericarditis), Bentaleb (pubic bone)
Coach: Domenico Tedesco
Watch: Goretzka "happy and overwhelmed" after Schalke fightback