Piere-Emerick Aubameyang struck twice for Jurgen Klopp's men, who had gone four games without a victory in the German top flight
Pierre-Emerick Aubameyang gave the visitors the lead in the 31st minute following excellent work from Marco Reus and Robert Lewandowski, only to see Benjamin Kessel level matters from a corner in the 54th minute.
But it was Aubameyang who had the final say, planting a finish low into the net after more superb approach play from the influential Reus to end Dortmund's run of four Bundesliga games without a win.
The loss leaves the hosts rooted to the foot of the table following a 13th defeat in 19 league games.
Braunschweig made one change as Jan Hochscheidt returned in place of Marc Pfitzner, while Dortmund's line-up showed two alterations from their 2-2 draw with Augsburg.
Mats Hummels made his long-awaited return from the ankle injury he picked up in November, and Aubameyang came in for Jakub Blaszczykowski, who is set for a lengthy absence after tearing his anterior cruciate ligament last time out.
After a cagey start to proceedings, the hosts enjoyed some good fortune in the 12th minute when Omar Elabdellaoui appeared to handle inside his own area, but Dortmund's appeals for a penalty were waved away.
Braunschweig fashioned the first real chance five minutes later when Kessel headed over the crossbar from six yards.
The visitors threatened for the first time in the 28th minute, Daniel Davari scrambling across his goal to keep out Nuri Sahin's curling free-kick from the edge of the area.
And Dortmund got the breakthrough when Aubameyang nodded into an empty net from two yards out following a slick one-two between Lewandowski and Reus, the former chipping the ball over the advancing Davari to leave his team-mate with the simplest of tasks.
Aubameyang was denied a second four minutes before the interval when the linesman incorrectly raised his flag, after the striker had converted another Lewandowski assist from close range.
Dortmund continued to look dangerous after the break, Reus bursting through only to be denied by Davari in the 48th minute.
They were made to pay for that miss six minutes later as Kessel got on the end of Hochscheidt's low corner to prod the ball beyond Roman Weidenfeller from six yards.
Parity lasted just 11 minutes, however, as Reus embarked on a surging run from midfield before slipping the ball into Aubameyang, who drilled in his 11th league goal of the campaign.
Reus almost found the net himself with 20 minutes remaining, but Davari managed to tip his 30-yard free-kick onto the bar and behind for a corner.
The German international was having an increased impact on the game and once again linked up to good effect with Lewandowski in the 75th minute, but the Poland international was denied by a last-ditch block with the goal at his mercy before Reus was again denied by the legs of Davari.
Henrikh Mkhitaryan struck the post from inside the box late on, while the hosts were also denied by the woodwork in stoppage time, Ermin Bicakcic almost stealing a point for the underdogs.