Leaders Bayern Munich suffered a shock 2-1 loss at Borussia Moenchengladbach on Saturday, a day of high drama in the Bundesliga, after Schalke 04 staged a remarkable four-goal comeback to draw 4-4 at Borussia Dortmund.
It was Bayern's first loss after nine straight wins in all competitions under coach Jupp Heynckes, who took over in October, and only their second in the league this season.
Bayern still lead on 29 points but the defeat cut their advantage to three points, with RB Leipzig now on 26 after their 2-0 win over Werder Bremen.
Gladbach struck twice late in the first half, in the 39th minute with a Thorgan Hazard penalty and five minutes later through Matthias Ginter.
Bayern, missing several key players through injury, fought back when Arturo Vidal scored with a low shot but they could not find an equaliser despite twice hitting the woodwork.
"We invested too little in the first half. We lost the game in that first half," Heynckes told reporters. "We were too slow, we struggled with our rhythm.
"But we played the game only on one goal in the second half. We had chances."
It was far more dramatic in Dortmund where Schalke 04 defender Naldo rose high to score a stoppage-time equaliser as they roared from 4-0 down at halftime to complete the Bundesliga's best comeback in 41 years.
Dortmund had scored four times in 13 minutes but saw their lead evaporate after the break as in-form Schalke, with four wins from their last five league games before Saturday, refused to surrender.
The Royal Blues became only the second Bundesliga team in history to avoid defeat after trailing by at least four goals, after Bayern Munich, who won 6-5 at VfL Bochum after trailing 4-0 in 1976.
There was more misery for Dortmund, without a league win since September, as top striker Pierre-Emerick Aubameyang, who had scored one goal and set up another, was sent off in the second half for a foul that earned him a second yellow card.
"At halftime I honestly did not believe we could still get a point from the derby," Schalke coach Domenico Tedesco said.
"That is why it feels so good. That second half was top level football."
Yet under-pressure Dortmund coach Peter Bosz, whose future at the club hangs in the balance, could only reflect: "It is difficult to deal with it. You just feel disappointment.
"That should never happen, that there is a 4-4 at the end. Not even with a red card. We just did not play football anymore."
They shocked the visitors with Aubameyang's 12th minute strike, Benjamin Stambouli's spectacular own goal and a Mario Goetze header. Raphael Guerreiro completed the first half onslaught with a fine volley in the 25th.
But the visitors came back with goals from Guido Burgstaller on the hour and Amine Harit, who later limped off injured, leaving his own team with 10 men.
Daniel Caligiuri's 86th-minute left-footed missile set up a frantic finale and Brazilian Naldo made sure Germany's fiercest football rivalry lived up to its reputation for drama with his stoppage-time equaliser.
The result put Schalke on 24 points in third, level with Gladbach, while Dortmund are fifth on 21.
Borussia Dortmund 4
(Aubemeyang 12, Stambouli 18-og, Goetze 20, Guerreiro 25) Schalke 04 4
(Burgstaller 61, Harit 65, Caligiuri 86, Naldo 90+4)
RB Leipzig 2
(Keita 34, Bernardo 87) Werder Bremen 0
(Petersen 51, Kath 90+1) Mainz 1
Eintracht Frankfurt 0 Bayer Leverkusen 1
(Gregoritsch 51, Finnbogason 78) Wolfsburg 1
Borussia Moenchengladbach 2
(Hazard 39-pen, Ginter 44) Bayern Munich 1