- Andrej Kramaric (25' Pen)
- Niclas Füllkrug (18')
- Marco Reus (45'+3')
- Julian Ryerson (90'+5')
- Ramy Bensebaini (71')
The visitors, who face AC Milan in the Champions League next week, took an 18th minute lead after a defensive error and with Niclas Fuellkrug slotting home for his first goal of the season.
Reus, who at 34 was seen as having lost his starting spot for good this season, has now scored three goals in the last three league matches.
Hoffenheim got off to a strong start in the second half and hit the crossbar with a superb Robert Skov freekick, with Dortmund down to 10 following the dismissal of Ramy Bensebaini with a second booking in the 71st.
But it was Dortmund who scored again with Julian Ryerson's scintillating 70-metre stoppage-time sprint that snapped Hoffenheim's four-game winning run.
- Florian Badstübner
|1. FC Heidenheim 1846||14||4||2||8||-9||14|
|1. FC Union Berlin||13||3||1||9||-13||10|
|SV Darmstadt 98||14||2||3||9||-20||9|