BERLIN — Defender Naldo scored in the fourth minute of injury time as Schalke rallied from four goals down to draw at Borussia Dortmund 4-4 in the Bundesliga’s 91st Ruhr derby on Saturday.

It was the club’s biggest ever comeback in the league.

Meanwhile, Bayern Munich lost to Borussia Moenchengladbach 2-1, ending manager Jupp Heynckes’ winning start at nine matches.

Dortmund raced to 4-0 after just 25 minutes and was hanging on for what would have been its first Bundesliga win since September when Naldo headed in Yevhen Konoplyanka’s corner.

The game ended with a melee. Dortmund midfielder Nuri Sahin and Schalke goalkeeper Ralf Faehrmann were booked by referee Deniz Aytekin. Faehrmann was goading the home fans before Sahin intervened.

“It wasn’t needed and I want to apologize for it,” Faehrmann said. “Over 90 minutes you also get things, verbal or non-verbal, thrown at you, but still I shouldn’t have reacted like that. I’m sorry and wish to officially apologize. After such a game I was led by my emotions.”

Both sides finished with 10 players: Dortmund after goal-scorer Pierre-Emerick Aubameyang was sent off for his second yellow card, Schalke after goal-scorer Amine Harit went off injured when Domenico Tedesco made all his substitutes.

Tedesco’s counterpart, Peter Bosz, will face questions on how his Dortmund side allowed a four-goal lead to slip away at home, while the draw will not give him the job security he needs after just one win across 10 competitive games.

“It should never happen that it’s 4-4 in the end, even with the red card,” Bosz said. “It shouldn’t happen what happened in the second half.”

Aubameyang opened the scoring in the 12th minute.

Six minutes later Benjamin Stambouli spectacularly turned Sahin’s free kick into his own net.

Aubameyang produced a brilliant cross for Mario Goetze to head Dortmund’s third only two minutes later, then Raphael Guerreiro hammered a volley inside the far post for the side’s fourth five minutes after that.

Schalke defender Thilo Kehrer, booked for a rash challenge on Sahin, was fortunate not to be sent off for another on Andrey Yarmolenko before the break. Kehrer was replaced at halftime.

Guido Burgstaller started the comeback with a score then Harit ensured an exciting finale with Schalke’s second with 25 minutes remaining.

Daniel Caligiuri cut inside to fire Schalke’s third goal with four minutes remaining, and the side was given seven minutes’ injury time to find the equalizer. Naldo needed only four.

It was only the second time a team came back from a four-goal deficit in the Bundesliga after Bayern Munich won 6-5 at Bochum in 1976.

The draw kept Schalke three points ahead of Dortmund.

BAYERN DEFEATED

Heynckes took over from the sacked Carlo Ancelotti and launched a winning streak until he returned to Moenchengladbach, his hometown club.

Heynckes, still ‘Gladbach’s top-scorer from his playing days in the 1960s and ’70s, could only watch as Bayern slumped to its second Bundesliga defeat.

Thorgan Hazard’s penalty gave ‘Gladbach a 39th-minute lead after Niklas Suele handled the ball.

Just after Robert Lewandowski struck the post for Bayern, Matthias Ginter made it 2-0 at the other end, shooting to the empty net after Lars Stindl’s effort took a deflection.

Kinsley Coman struck the post before Arturo Vidal finally rewarded Bayern’s perseverance in the 74th. However, the home side held on.

ADVANTAGE LEIPZIG

Leipzig took advantage of its rivals’ dropped points to reclaim second place with a 2-0 win at home over Werder Bremen.

Leipzig moved two points above Schalke and three behind Bayern after 13 games played.

Also, Augsburg came from behind to beat visiting Wolfsburg 2-1, Bayer Leverkusen won 1-0 at Eintracht Frankfurt, and Freiburg defeated visiting Mainz 2-1.