Thomas Tuchel's side were punished for not making their domination count against Schalke last time out, but goals from Gonzalo Castro, Shinji Kagawa and Pierre-Emerick Aubameyang proved enough for the hosts in their 100th top-flight clash with Hamburg.
Two years to the day since Dortmund's last Bundesliga defeat at Signal Iduna Park, Aubameyang, having attracted attention for his Nike-sponsored mask celebration in the Ruhr derby, lacked his usual composure as he squandered a number of excellent opportunities before netting his 25th of the season in stoppage time to round off the victory.
Aubameyang had not been the only forward to struggle in front of goal until that point, however, with Hamburg's Bobby Wood failing to cash in on sloppy defending either side of the interval.
But despite Dortmund's slack finishing, Hamburg could not find an opening, ensuring the visitors' four-match unbeaten run in the league came to an end.
Markus Gisdol's side remain a point above the relegation play-off place, while Dortmund stay in fourth, a point behind Hoffenheim, who claimed a surprise 1-0 victory over runaway leaders Bayern Munich.
Aubameyang looked set to put the hosts ahead at the culmination of a slick move five minutes in, but could not find a way past the sprawling Rene Adler.
Hamburg's top-scorer Wood got through in similar fashion moments later, only to be denied by Roman Burki.
Adler was left flat-footed for Dortmund's 13th-minute opener, though - the veteran shot-stopper unable to prevent Castro's precise free-kick nestling in the bottom-right corner.
Dortmund's lead should have been doubled as the half-hour mark approached, but Adler was out swiftly to deny Aubameyang a second time.
Aubameyang's blushes were spared somewhat by his counterpart soon after - Wood heading wide from Filip Kostic's cross following Lukasz Piszczek's error.
Dortmund continued to carve open Hamburg's defence after the restart, but both Kagawa and Ousmane Dembele could not find the target after finding space in the visitors' area.
An error from Burki almost allowed Wood to head home on the hour-mark, before Kostic's volley landed on the roof of the net.
Those chances boosted Hamburg, but the result should have been wrapped up with just under 20 minutes remaining - Aubameyang's struggles continuing as he struck wide after going one-on-one with Adler.
However, Aubameyang made amends in the 81st minute, sliding a cross into the path of Kagawa, who tucked home from six yards.
And, in the final minute of stoppage time, Kagawa returned the favour with a sublime pass - Aubameyang making no mistake as he rounded Adler to score and set Dortmund up perfectly for their clash with Bayern next time out.
Key Opta stats:
- Borussia Dortmund have not lost any of their last 34 home games in the Bundesliga (28 wins, six draws) – the longest run at home since Werder Bremen, who stayed unbeaten in 43 BL home games between 1984 and 1987.
- Dortmund have scored in their last 18 BL matches, which is the longest current run in the league.
- For the first time Pierre-Emerick Aubameyang managed to score in seven consecutive competitive games for Borussia Dortmund. It was his 25th goal in this Bundesliga compaign – equalling his personal record from 2015-16.