Schalke came from 4-0 down to deny rivals Borussia Dortmund a much-needed victory as a dramatic Revierderby ended in a 4-4 draw.
Pierre-Emerick Aubameyang scored one and set up another as Dortmund raced into a four-goal lead inside 25 minutes, but his dismissal with 18 minutes left contributed to an epic collapse from Peter Bosz's men, who have taken only two points from their last six league matches.
Dortmund's 11th-minute opener was perhaps fortunate as Aubameyang saw his initial shot saved, but bundled it in regardless as he slid towards goal - and the video referee allowed it to stand despite suspicions of handball.
It was 2-0 seven minutes later when Benjamin Stambouli headed into his own net from Nuri Sahin's free-kick, and Aubameyang turned provider in the 20th minute, with a delicious cross headed in by Mario Gotze at the far post.
Raphael Guerrero made it 4-0 when a deflected ball looped up invitingly and he volleyed in to the far corner with Gonzalo Castro a spectator.
This backfired...— Coral (@Coral) November 25, 2017
Dortmund 4-4 Schalke pic.twitter.com/kaM7hKztFZ
Schalke rallied in the second half as Dortmund's defensive frailties reared their head. Guido Burgstaller headed in just after the hour mark and four minutes later Amine Harit turned home Yevhen Konoplyanka's cross.
Worries for the hosts only grew in the 72nd minute when Aubameyang, booked in the 55th minute for a foul on Naldo, saw red after bringing down Harit.
And those worries proved justified as Daniel Caligiuri fired in Schalke's third with four minutes left before Naldo's header in the fourth minute of seven added on secured a point.
It was not enough for Schalke to hang on to second place, however, as RB Leipzig beat Werder Bremen 2-0.
Naby Keita rifled in a 34th-minute shot from outside the area before Bernardo made sure of the points with three minutes left.
Eintracht Frankfurt missed the chance to move into the European places as they lost 1-0 at home to Bayer Leverkusen.
Eintracht's Lucas Alario had hit the post twice in the space of three first-half minutes, and Leverkusen capitalised on their misfortune as Kevin Volland struck a 76th-minute winner.
Augsburg came from behind against the 10 men of Wolfsburg for a 2-1 win.
The visitors were reduced to 10 men - somewhat harshly - in the 11th minute when Maxi Arnold saw red for what appeared a soft touch on Alfred Finnbogason, despite the use of the video referee.
They took the lead regardless when Daniel Didavi struck in the 40th minute, but Augsburg came back after the break with Michael Gregoritsch levelling in the 51st minute before Finnbogason hit the winner 14 minutes from time.
Struggling Freiburg picked up a much-needed 2-1 win over Mainz. Nils Petersen opened the scoring six minutes into the second half and they would need Florian Kath's stoppage-time goal as Emil Berggreen replied seconds later in a frantic finish.