Lewandowski's opener after seven minutes was equalised by Freiburg's Jan Rosenthal after 34 minutes. Ilkay Gundogan made it 2-1 for Dortmund in the 44th minute and Kevin Grosskreutz pushed the lead to 3-1 after 59 minutes.
Lewandowski struck a second time in the 70th minute to seal a win that moves Dortmund three points behind leaders Bayern.
Dortmund took the lead after seven minutes with some fine passing with Shinji Kawaga playing a give-and-go with Gundogan before crossing to Lewandowski, who only needed to tap in.
Freiburg equalised in the 34th minute as Rosenthal passed to and collected the ball back from Anton Putsila before beating Dortmund goalkeeper Roman Weidenfeller between his legs.
Dortmund reclaimed the lead in the 44th minute following a controversial decision.
Rosenthal played a ball back towards his goalkeeper which Jakub Blaszczykowski ran onto while Freiburg players stopped playing when the linesman raised his flag. But the referee did not call off play and Blaszczykowski played over to Gundogan for an easy goal.
Dortmund made it 3-1 following a counter attack in the 59th with Kawaga playing a long ball to Lewandowski, who waited and passed into the run of Grosskreutz for a perfect shot off the inner half of the far left post.
The visitors pulled added a fourth after another counter attack with Kawaga playing a through ball to Grosskreutz, who played over to Lewandowski who lashed in with his left foot.