The hosts went in front on the stroke of 45 minutes through Aubameyang — Ousmane Dembele dragging his cross across the face of goal for the sliding Gabonese striker to poke home.
Piszczek added Dortmund’s second eight minutes after the break — the Poland international pouncing on a poor clearance of a Gonzalo Castro cross and side-footing into the top right corner.
Freiburg hit back seven minutes later. Maximilian Philipp raced onto a fine through ball before firing across Dortmund goalkeeper Roman Burki and into the far netting.
Second-half substitute Guerreiro completed the scoreline in second-half stoppage time with a fine finish after an impressive interplay of passes played him in on goal.