Schalke hit back from four first-half goals down to draw with Borussia Dortmund in one of the all-time great Revierderbies.

Borussia Dortmund 4-4 Schalke

Goals: 1-0 Aubameyang (12'), 2-0 Stambouli (og 18'), 3-0 Götze (20'), 4-0 Guerreiro (25'), 4-1Burgstaller (61'), 4-1 Harit (65'), 4-3 Caliguri (85'), 4-4 Naldo (90+3')

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.

You can follow reaction to the incredible match below...

Head here for the Borussia Dortmund vs. Schalke match centre!