Bundesliga wrap: Dortmund trim gap
A brace from Robert Lewandowski inside the opening 21 minutes had Juergen Klopp's side in the ascendancy at the Signal Iduna Park, but a Mohammed Abdellaoue goal five minutes before the interval breathed life into the contest.
Julian Schieber sealed the win for Dortmund in the 72nd minute, and the champions bridged the gap slightly on the leaders, who play relegation-threatened Hoffenheim on Sunday.
In other results, Schalke climbed to sixth thanks to a 4-1 thumping of Wolfsburg away from home.
The match was evenly poised five minutes into the second half when Ivica Olic cancelled out Julian Draxler's 33rd-minute opener for the visitors, but Draxler's second just after the hour mark and late strikes from Jefferson Farfan and Klaas-Jan Huntelaar fired Jens Keller's side to victory.
Augsburg pulled to within six points of 15th-placed Wolfsburg thanks to their 1-0 away win at Werder Bremen, with victory sealed by a Tobias Werner goal in the first half.
Freiburg had an 83rd-minute goal from Jonathan Schmid to thank for a 1-1 draw at Nuremberg, who opened the scoring from a Timmy Simmons penalty just after the half-hour.
And Hamburg played out a 1-1 draw at home with Greuther Fuerth.