Bundesliga Wrap: Bremen off bottom with BVB win
Jurgen Klopp's men have struggled significantly this season after finishing in the top two in each of the last four campaigns.
And Dortmund were dealt their 10th league defeat by Bremen as the hosts moved off the bottom of the table.
Davie Selke opened the scoring inside three minutes, curling home after latching on Santiago Garcia's superb ball before turning creator in the 62nd minute to cross for Fin Bartels to slot home a second.
Mats Hummels headed in Ilkay Gundogan's delivery seven minutes later to give Dortmund hope, but the visitors could not complete the comeback.
Wolfsburg strengthened their grip on second place by coming from behind to beat Cologne 2-1.
Dominic Maroh put Cologne ahead after 11 minutes before Bas Dost levelled just five minutes later and Naldo capped off the fightback 12 minutes from time by heading home Kevin De Bruyne's corner.
Wolfsburg are now six points ahead of third-placed Bayer Leverkusen after Roger Schmidt's men salvaged a 1-1 draw at Eintracht Frankfurt.
Frankfurt's Alexander Meier netted from the penalty spot in the 36th minute following Tin Jedvaj's foul on Takashi Inui, only for Karim Bellarabi to salvage a share of the spoils for Leverkusen with a powerful finish into the bottom corner.
Sixth-placed Augsburg came from behind to claim a 2-1 home win over Borussia Monchengladbach, pulling level with the visitors and Schalke - held to a 0-0 draw by Hamburg - as a result.
Max Kruse had put Gladbach ahead from the penalty spot in the third minute, but Markus Felner and Raul Bobadilla were on target to turn things around for Markus Weinzierl's men.
Elsewhere, the game between Stuttgart and Paderborn ended goalless.