Borussia Dortmund were made to pay for their inefficiency in front of goal as Hoffenheim fired two late goals to pick up a surprise 2-1 victory.
Lucien Favre's side came into the game on a five-match unbeaten run and were looking to close the gap to Bundesliga leaders RB Leipzig.
They got off to a good start, with Mario Götze firing home from close range after 17 minutes to give Dortmund the lead. The German finished off an impressive team move, but it was not a sign of things to come.
Instead, Hoffenheim grew into the game and came close to grabbing a quick reply. Robert Skov saw his free-kick cannon back off the bar, but Dortmund looked to be doing their job well enough as the hosts could not find a way through.
Favre's men created plenty of good opportunities, with Jadon Sancho and Nico Schulz both coming close, but they were unable to put the game out of the hosts reach.
They paid for their profligacy in the 79th minute as substitute Sargis Adamyan powered home an equaliser, and things went from bad to worse eight minutes later when Andrej Kramarić headed home to complete the comeback.
Dortmund pushed for their own equaliser but could not find it before the full-time whistle, bringing their five-game unbeaten streak to a sudden end.
The loss leaves Dortmund in fourth place in the Bundesliga, but they could drop down to fifth if Schalke can beat Freiburg at the weekend.
The biggest concern for Favre will be the fact that his side now run the risk of seeing their title rivals pull away from them. Bayern Munich are only ahead on goal difference, while Borussia Mönchengladbach and leaders Leipzig remain four points clear, but all three of those sides now have a game in hand.
Dortmund could now enter the winter break outside the top four, so they will be desperate to bounce back when they return to action against Augsburg on 18 January.
For more from Tom Gott, follow him on Twitter!