England youth international Jamie Bynoe-Gittens grabbed a 77th-minute equaliser after a goalkeeping error before weaving past three players to help Youssoufa Moukoko bag another in the 84th. Marius Wolf sealed the win in the 88th.
Michael Gregoritsch put Freiburg in front after 35 minutes.
"There is a lot of room for improvement for us," said Dortmund defender Nico Schlotterbeck, who joined from Freiburg this season. "We need to defend as a team."
"We could have conceded two or three goals. We started well and then we were 1-0 behind and Freiburg were at that stage playing much better than us. Then (Freiburg keeper) Mark Flekken's mistake came; we scored two more and the game was decided."
Dortmund had started with new striker Anthony Modeste, signed during the week as an emergency replacement for Sebastien Haller, who is being treated for a malignant tumour.
But the hosts struck first with Gregoritsch's looping header for his second campaign goal.
Dortmund lacked precision and Freiburg had the better chances after the break with Gregoritsch firing over the bar after again being left unmarked.
Dortmund launched their comeback after being gifted an unexpected equaliser thanks to a howler by Mark Flekken who tried to block a 25-metre shot from teenager Bynoe-Gittens but let the ball slip through his hands and into the net.
Bynoe-Gittens should have done better in the 83rd when he was sent through but failed to get his shot on target, but he make amends with a superb run to launch the move that saw Moukoko make it 2-1 in the next minute.
Halftime substitute Wolf then made sure of the points and Dortmund's second win in their two matches in the league.