Axel Witsel cut the deficit in the 85th minute but Breel Embolo netted Schalke’s fourth goal a minute later to seal a memorable derby.
Berlin: Borussia Dortmund suffered a severe setback in the Bundesliga title race when their shock 4-2 home loss to lowly Schalke 04 in the Ruhr valley derby on Saturday left them a point behind leaders Bayern Munich.
Dortmund, who had two players sent off, are on 69 points, with three games left to play, with Bayern, who face strugglers Nuremberg on Sunday, on 70.
The Bavarians will open up a four-point lead with a win, leaving Dortmund hoping that Bayern might slip up twice in the remaining three games.
Schalke are now all but certain of staying up, having moved up to 30 points in 15th place, nine ahead of the relegation playoff spot occupied by VfB Stuttgart, who play Borussia Moenchengladbach later on Saturday.
It had all started perfectly for Dortmund with Mario Goetze’s header from a superb Jadon Sancho assist putting them in front in the 14th minute.
But Schalke earned a penalty following a VAR review for a hand ball by Julian Weigl after Breel Embolo shot at him from close range, and Daniel Caligiuri converted it to level. The decision left Dortmund coach Lucien Favre furious.
“We started really well and got the opening goal,” Favre said. “But then their penalty was ridiculous.
“This was so ridiculous. Whoever invented that rule had no clue. They want that players stop using their arms. How is that possible? You need them for balance. Do they have to cut off their arms? It is a disgrace. The biggest scandal in years.”
Asked whether the title had now been decided in favour of Bayern, Favre said: “Yes, of course.”
Salif Sane’s powerful header from a Caligiuri corner in the 28th made it 2-1 to Schalke, who looked nothing like a team who have been battling to avoid relegation for most of this season.
Disciplined at the back and waiting for their chances on the break, Schalke were able to successfully soak up attack after attack from Dortmund, who had more than 75 percent of possession in the first half but lacked the final pass.
“When you play in this stadium then you have to enjoy it,” said Schalke interim coach Huub Stevens.
“My players did what we had set out to do. As for the penalty I do not know if it was one but today we had luck on our side.”
Things took a turn for the worse with Dortmund captain Reus was sent off on the hour with a straight red card for a studs-up challenge on Suat Serdar.
Caligiuri curled the resulting free kick into the top corner before Dortmund were reduced to nine men when Marius Wolf got his marching orders in the 65th for another rough challenge on Serdar.
Dortmund gave it all they had and Axel Witsel cut the deficit in the 85th minute but Breel Embolo netted Schalke’s fourth goal a minute later to seal a memorable derby win in what has otherwise been a disappointing season for last year’s league runners-up.
RB Leipzig made sure of their top-four finish and a return to the Champions League by beating Freiburg 2-1 to remain in third place on 64 points, 10 ahead of fourth-placed Eintracht Frankfurt.