Jurgen Klopp's men have now won just one of their last five league fixtures and sit 12 points behind runaway leaders Bayern Munich.
Hoffenheim took a two-goal lead thanks to excellent strikes from Sven Schipplock and Kevin Volland, but a horror mistake from goalkeeper Jens Grahl allowed Dortmund back in.
Playing just his second ever Bundesliga game, Grahl completely dropped a corner and then failed to react and clear, allowing Pierre-Emerick Aubameyang to pounce and score in the 44th minute.
Dortmund dominated the second half and levelled thanks to Lukasz Piszczek in the 67th minute, but failed to find a winner as Hoffenheim's disappointing home record – they have won just one of nine this season – continued.
Dortmund made four changes, with goalkeeper Roman Weidenfeller rested and replaced by Australian Mitchell Langerak.
Defenders Piszczek and Manuel Friedrich also came back in for Dortmund, while Hoffenheim were unchanged after successive away wins.
Dortmund started brightly and after the Bundesliga's top scorer, Robert Lewandowski, went close, his involvement then saw Marco Reus' goal disallowed after he made an attempt to touch the ball in an offside position.
Reus should have scored in the 16th minute when presented with an open net, but was denied by a superb last-ditch challenge from Niklas Sule.
And Hoffenheim made them pay just 60 seconds later when Schipplock calmly dinked over Langerak after an excellent Roberto Firmino ball.
Eugen Polanski then thrashed an effort against the crossbar from 20 yards for the hosts, and with Dortmund shaky at the back, Klopp's side conceded again eight minutes before the break.
Firmino was again involved, setting Sebastian Rudy free, and he had the presence of mind to draw two challenges before releasing Volland, who curled a terrific left-footed effort beyond Langerak to delight the home crowd.
Dortmund had several attempts during the first half and deserved to pull one back, but the manner of Aubameyang's ninth Bundesliga goal of the season surprised everyone.
Grahl spilled a routine corner and the defence failed to clear, allowing Aubameyang to score from one yard and give his side a lifeline on the stroke of half-time.
Dortmund impressed after the break but struggled to break down Hoffenheim, going closest with free-kicks from Reus and Aubameyang before the introduction of Henrikh Mkhitaryan sparked them.
The Armenian fired a stunning 25-yard effort at Grahl just one minute after coming on, and although that was saved, Piszczek levelled proceedings after a great Nuri Sahin cross from the left in the 67th minute.
Charging to the far post, Piszczek had his header saved, but poked in the rebound and after Mkhitaryan shot wide, only the post denied Lewandowski.
The forward's shot snuck under Grahl and into the post, but he dived back to claim it and avoid another blunder.
Reus and Volland missed late chances to win it before Dortmund substitute Julian Schieber turned wide from close range, as both sides were forced to share the spoils.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.