On the back of consecutive Bundesliga wins, Dortmund started confidently and the visitors benefitted from their early pressure as John Brooks miscontrolled on the edge of his own area, allowing Julian Brandt to release Niclas Fullkrug, who fired past Oliver Baumann for his first BVB goal.
Itching to add to their own winning run of four successive matches, Hoffenheim hit straight back after Mats Hummels lunged into a tackle and tripped Anton Stach in the penalty area to gift the hosts an opportunity to equalise.
The experienced Andrej Kramaric stepped up to send Gregor Kobel the wrong way, passing into the bottom corner for his fourth penalty goal of the season.
Momentum quickly shifted in Hoffenheim’s favour and Die Kraichgauer looked more likely to wrestle back the lead before the break when Robert Skov let fly from 20 yards but his goal-bound strike was deflected wide by a swarm of yellow shirts.
Despite their advances, Hoffenheim were punished seconds before the break by another error after Oliver Baumann palmed Donyell Malen’s cross straight to Marco Reus, allowing the midfielder to volley into the net from close range.
Conceding the lead didn’t dampen Hoffenheim’s spirit and the hosts went close to restoring parity again shortly after the break with Grischa Promel’s header forcing Gregor Kobel into a reaction save before Skov’s powerful free-kick thumped the crossbar.
With just 20 minutes remaining, Dortmund’s Ramy Bensebaini was sent off after receiving two bookings in four minutes to set up a nervy end for the visitors. Despite the numerical disadvantage, Julian Ryerson sealed the win in stoppage time after controlling in his own half, dribbling past two defenders, and curling under Baumann to cap off a sensational solo run.
Inevitably, Dortmund sat deep and frustrated Hoffenheim, who suffered their first defeat of the campaign since a 2-1 opening-day loss against SC Freiburg.
Edin Terzić’s side had to dig deep to hold off Hoffenheim’s pressure, but BVB were rewarded for their resilience with a third consecutive win and a trip to the top of the table, remaining unbeaten after six Bundesliga matches this season.