Max Kruse gave Freiburg the lead after 36 minutes before Nils Petersen equalised moments later.
Daniel Caligiuri made it 2-1 to the visitors from the penalty spot in the 55th minute, and although Petersen's second levelled it up again nine minutes later, Matthias Ginter's 70th-minute strike finally settled it.
It was Freiburg's second win of 2013 and first over Bremen since July 28, 2001.
Freiburg began to take control of the match after 20 minutes and Bremen keeper Sebastian Mielitz made a great save to deny Jan Rosenthal before denying Vegar Eggen Hedenstad moments later.
The visitors took the lead nine minutes before half-time when Rosenthal headed down and Kruse finished into the lower right corner.
Bremen equalised just three minutes later on a counter attack as Kevin de Bruyne fed Petersen, who slotted past Freiburg keeper Oliver Baumann.
Werder almost took the lead in the 49th minute when Clemens Fritz's shot came back off the post.
Freiburg took the lead six minutes later from the spot after Aleksandar Ignjovski brought down Caligiuri, who took the penalty himself and converted into the lower left side.
Werder equalised a second time in the 64th minute when Marko Arnautovic's cross from right side sailed just out of the reach of Baumann and off defender Ginter, allowing Petersen to finish into the empty goal.
The game remained up-tempo and Karim Guede hit the left-hand post for Freiburg in the 67th minute and Petersen hit the upright at the other end a minute later.
Freiburg pulled ahead a third time in the 70th minute as Guede's shot came back off the crossbar and landed at the feet of Ginter, who struck home.
Bremen remained unlucky and found only the framework with 14 minutes left as Petersen hit the post.