Peter Bosz's men came into the match in good form after winning their first two league outings, but they came unstuck as they failed to break down their hosts' resistance despite having more than 80 per cent of the possession after seeing Yoric Ravet sent off.
Freiburg's early defensive solidity looked at threat when debutant Ravet was dismissed for a nasty tackle on Marcel Schmelzer in the 27th minute, a punishment that was upgraded by the use of VAR after the initial showing of a caution.
For all their dominance and numerical advantage, however, Dortmund struggled to craft clear-cut chances for the remainder of what ultimately proved to be a frustrating first half.
Opportunities did begin to come their way after half-time and Dortmund were utterly in control, keeping Freiburg penned into their own area for long periods.
But Alexander Schwolow in the Freiburg goal dealt well with Dortmund's efforts and eventually, after a tense final period, the hosts held on to a commendable point.
Dortmund took charge right from the start, but that attack-minded approach left them open at the back on occasion and Freiburg should have capitalised early on.
The hosts caught Dortmund on the break and Tim Kleindienst found himself through on goal, before shooting straight at the relieved Roman Burki.
Dortmund's defensive stability was not helped by Marc Bartra's exit with an innocuous-looking injury after 18 minutes.
But Freiburg's chances suffered a severe blow just before the half-hour mark as Ravet caught Schmelzer with a crude studs-first challenge which forced the fullback off on a stretcher and the referee – with the help of his video assistant – produced a red card, changing his mind after originally showing yellow.
Dortmund's dominance only increased as a result, though Schwolow was only tested once, pushing away Nuri Sahin's 30-yard drive just before the break.
The visitors almost ended the Freiburg resistance two minutes after the interval, as Mario Gotze lofted a precise pass into the area for Christian Pulisic, whose left-footed effort drew a fine save from Schwolow.
Pulisic then turned provider shortly after, dazzling on the right flank with some clever footwork before crossing to Pierre-Emerick Aubameyang, who headed over.
Dortmund thought they had finally broken through Freiburg's defence with 10 minutes to play, but Aubameyang found the net after referee Benjamin Cortus had stopped play for a foul.
And Freiburg hearts were in mouths again shortly after, as Lukasz Piszczek headed agonisingly wide in what proved to be the visitors' final chance on a frustrating day.
Key Opta stats:
- This was the first 0-0 draw between Freiburg and Borussia Dortmund in their 35th Bundesliga encounter.
- Dortmund have not lost any of their last 12 games in all competitions (eight wins, four draws) – their longest unbeaten run since January-April 2016 (18 games).
- Dortmund kept a clean sheet in their first three games of a Bundesliga season for only the second time – in 2001-2002 they won the championship at the end of the season.
- Pierre-Emerick Aubameyang failed to score in a competitive game for Dortmund for the first time since April 29 (0-0 vs Cologne). He had scored in eight consecutive games.