Borussia Dortmund suffered their first Bundesliga defeat of the season as Fortuna Dusseldorf capitalised on a sluggish performance from Lucien Favre's side to claim a vital victory on Tuesday.
The league leaders fell behind when Dodi Lukebakio raced clear of Manuel Akanji and Abdou Diallo through the centre from Kevin Stoger's pass and slotted beyond Roman Burki.
Dortmund fell further behind when Jean Zimmer netted an absolute scorcher, arrowing into the top left corner from outside the area, leaving Burki flapping at thin air.
Paco Alcacer came off the bench to head in Lukasz Piszczek's cross but the away side couldn't force an equaliser.
Check out our breakdown of the game below.
Key Talking Point
Dortmund have hardly put a foot wrong this season and have turned in some wonderful attacking displays, but there was a lot of sluggishness on their part on Tuesday evening.
With Dusseldorf sitting deep, BVB toiled in trying to break their opponents down, with Christian Pulisic, Marco Reus and Jacob Bruun Larsen all struggling to provide striker Mario Gotze with clear cut chances.
The visitors looked dangerous in the final 15 minutes and pulled one back through substitute Alcacer, but their efforts ultimately counted for little as they fell to just their second defeat in all competitions this season.
Starting XI: Burki (6); Piszczek (6), Akanji (5), Diallo (6), Schmelzer (6); Witsel (6), Delaney (5); Pulisic (4), Reus (5), Larsen (4); Gotze (5).
Substitutes: Toprak (5), Sancho (6), Alcacer (7).
STAR MAN - Alcacer started on the bench but it was clear as soon as he headed in that the former Barcelona striker should have featured from the outside.
He's been the poacher on the end of all of Dortmund's brilliant attacking play this term and he offered the finishing touch that Mario Gotze couldn't provide or ignite.
WORST PLAYER - Larsen had a pretty subdued night and was eventually hauled off in the 60th minute after failing to make an impact.
The 20-year-old undoubtedly has a bright future ahead of him, having proved his worth with two goals and an assist in the league so far this campaign, but he couldn't provide any positivity on a night where Dortmund needed players to stand up and be counted.
Dortmund are next in action on Friday, when they host Borussia Monchengladbach at Westfalenstadion. After that clash they don't play until January 19, when they take on RB Leipzig.