Julian Schieber scored the winner as Hertha Berlin recorded a 1-0 victory to condemn Borussia Dortmund to a ninth Bundesliga defeat of the season.
Chances were few and far between in the early stages, with Ciro Immobile's wayward long-range strike the closest that Dortmund would come in the first half.
After being forced onto the back foot in the opening minutes, Hertha improved as the first half progressed, and were given a boost when Jurgen Klopp was forced to remove Henrikh Mkhitaryan due to a hamstring.
Schieber rewarded his side for their progress in the 40th minute as the forward evaded a couple of challenges inside the box before slotting past Mitchell Langerak, as the Dortmund defence paid the price for some sloppy positioning.
Roy Beerens almost doubled Berlin's lead before the break, but Langerak responded well to get a firm hand on his powerful low strike.
Dortmund were on top after the interval, and Thomas Kraft was forced into a fine save to keep out Immobile, who had powered his way into the box by evading a couple of challenges.
Neven Subotic fired the best of the late chances over the crossbar as Dortmund failed to move further clear of the relegation zone.