Andrej Kramaric celebrates scoring their second goal with teammates Photograph:( Reuters )
Dortmund are level on 30 points with Bayern Munich, who host VfL Wolfsburg on Saturday, and four points behind leaders RB Leipzig, who welcome Augsburg, and second-placed Borussia Moenchengladbach who visit Hertha Berlin.
Hoffenheim struck late through Sargis Adamyan and Andrej Kramaric to complete a 2-1 comeback win over Borussia Dortmund on Friday as the Bundesliga heads into the winter break.
Fourth-placed Dortmund are level on 30 points with Bayern Munich, who host VfL Wolfsburg on Saturday, and four points behind leaders RB Leipzig, who welcome Augsburg, and second-placed Borussia Moenchengladbach who visit Hertha Berlin.
Mario Goetze made the most of a rare start by putting the visitors ahead in the 17th minute, while Hoffenheim struggled to get into the game although they hit the bar from a Robert Skov free kick with their only real chance.
But Dortmund, who hit the woodwork through Thorgan Hazard and missed several other golden chances, failed to add another goal despite being in complete control of the game and they were punished for it.
The hosts leveled when substitute Adamyan stabbed the ball home after goalkeeper Roman Buerki failed to clear in the 79th.
The Armenian, who also scored twice against Bayern Munich in a 2-1 away win in October, then turned provider, crossing for Kramaric to head the winner three minutes from time.
Dortmund, without injured Axel Witsel and captain Marco Reus, also withdrew Thorgan Hazard and Mats Hummels at halftime, the latter with a suspected fractured hand after a nasty fall.
"We had the game completely under control. We just did not use our chances," Dortmund coach Lucien Favre told reporters. "We had five, six big chances. It was easy to make the 2-0 and the 3-0. It is silly, just silly.
"We are a bit tired. Two injuries at halftime and we played too complicated. We always want to do the special thing. That costs us a lot."
It was the second consecutive game in which Dortmund gave up the lead, after being in front twice in the 3-3 draw against Leipzig on Tuesday.
The league breaks after this weekend's matches and resumes on Jan. 17.