Although the home team dominated the first half, Neven Subotic headed Dortmund in front 10 minutes after the interval.
Mario Gotze then added a second late on as Dortmund built on their midweek Champions League win over Real Madrid by moving back up to fourth in the domestic standings.
Winter arrived in the Bundesliga as the snow fell in the Black Forest, and the slippery conditions seemed to favour the hosts.
Jurgen Klopp's Dortmund are used to playing a slick passing game, but staying on their feet is a fundamental condition which could not be guaranteed in the snow.
Freiburg's arguably more robust approach was therefore more effective and they had the best chances of the first half, spreading panic inside the Dortmund half after 15 minutes when Subotic cleared for a corner.
Daniel Caligiuri's header from the set-piece was diverted on to the post by Dortmund's midweek hero Marcel Schmelzer.
The visitors struggled to get control of the situation inside their own penalty area and every attack looked like it would end in a goal for Freiburg.
Fallou Diagne sent their next big chance over the crossbar in the 32nd minute before the snow came to Dortmund's rescue, stopping a square pass from Julian Schuster which would have presented an open goal for a team-mate.
Dortmund's first real effort of the game resulted in the opening goal in the 54th minute.
Marco Reus' free-kick found Subotic, who guided a header into the far corner using the curl on the ball to beat Oliver Baumann.
Roman Weidenfeller denied Freiburg an immediate equaliser with a brave save before a second Dortmund goal ended home hopes.
Robert Lewandowski set up Gotze, who slid the ball into the far corner of the net to earn Dortmund all three points.