Host Borussia Monchengladbach stunned 10-man Borussia Dortmund 1-0 with a goal from Denis Zakaria on Saturday to snap its opponent's three-game winning run in the Bundesliga.
Dortmund, playing without injured captain Marco Reus and top striker Erling Haaland, suffered its second loss of the season, dropping to fourth place on 12 points, four off leader Bayern Munich as Gladbach notched up its second victory in six games.
Haaland, who has scored 47 goals in 48 league games for Dortmund, was ruled out earlier on Saturday after picking up an injury in Friday's final training.
Zakaria struck in the 37th minute after charging into the box, getting a lucky deflection to keep possession and then slotting in for the lead.
ALSO READ - Bundesliga roundup: Leipzig comes through for Marsch with 6-0 rout of Hertha
Things got worse for Dortmund, which hosts Sporting in the Champions League next week, three minutes later when Mo Dahoud got his marching orders following a second booking, putting his team firmly on the back foot and leaving defender Mats Hummels fuming.
"It is dumb to give the referee the chance (to send him off)," Hummels said of Dahoud's dissent that triggered a second booking following a foul. "I hope Mo knows that what he did was wrong.
"It is wrong to send him off but you should not even give the referee the chance to do it."
The host had a string of good chances in the second half on a frustrating return to Gladbach for Dortmund coach Marco Rose, who had coached the Foals for two years but left this season to join the Ruhr valley club.
The home fans gave him a fiery welcome, with jeers and whistles, after he had angered them by announcing his departure midway through last season with the team then missing out on the European spots.
Rose's team, without Haaland and Reus in attack, did not manage a single effort on goal over 90 minutes and dropped to fourth, one point behind third-placed VfL Wolfsburg, which lost 3-1 at Hoffenheim, and Bayer Leverkusen.
Gladbach moves up to 11th on seven points.