BVB's failure to add to their lead was marred by two late Hoffe penalties, as the visitors will now face Kaiserslautern in a relegation play-off
Robert Lewandowski gave BVB the lead inside six minutes, and the signs pointed to a comprehensive home success, but Roman Weidenfeller's red card and two spot-kicks from Sejad Salihovic deep in proceedings handed the visitors a reprieve as they must now contest a relegation play-off with Kaiserslautern.
And, as if that was not a bitter enough pill for the hosts to swallow, they were forced to endure the heartache of a disallowed goal in the third minute of stoppage time.
Nonetheless, Dortmund made a bright start to the match as Jakub Blaszczykowski fired an early warning shot, and it was swiftly followed up when Lewandowski struck the ball past Koen Casteels from close range.
They continued to probe, with Kuba a constant thorn down the right flank as he looked to infiltrate the leaky Hoffe backline, and he almost came up trumps again were it not for the goalkeeper's quick charge.
More chances ensued, but neither of the Polish pair could find a way past Casteels and it increasingly looked as if the strugglers - in need of all three points - would hold out for a late smash-and-grab.
The second half produced more of the same, although Hoffenheim began to find some solace through the darting runs of full-back Fabian Johnson and the aerial prowess of substitute Sven Schipplock.
But Dortmund were to be punished as Mats Hummels' foul in the box on 76 minutes allowed Salihovic to step up and blast the penalty into the top-right corner.
Quite incredibly - six minutes later - BVB were forced to rue their profligacy when Roman Weidenfeller was given his marching orders for a professional foul and Salihovic was at it again from 12 yards out.
With all three BVB substitutes used, Kevin Grosskreutz assumed goalkeeping duties for the last 10 minutes, but it was the hosts who found the net in injury-time, although Lewandowski's effort was ruled offside.
Dortmund must now regroup ahead of the Champions League final on May 25 - and even more so following Bayern Munich's impressive turnaround against Monchengladbach.