Sebastian Rudy scored late in the first half for Hoffenheim as Borussia Dortmund are in danger of losing their 100% Bundesliga record this season.
Hoffenheim began the game in attacking fashion as Kevin Volland tested Roman Burki from 25 yards.
Marco Reus had a chance to open the scoring immediately afterwards for Dortmund but failed to control a ball sent over the top of the Hoffenheim defence.
Midway through the half Pierre-Emerick Aubameyang went close for Thomas Tuchel's side as he almost diverted a Marcel Schmelzer cross into the net.
Aubameyang again threatened to break the deadlock 10 minutes later, sending a looping header just over the crossbar with Hoffenheim keeper Oliver Baumann stranded.
However, it was Rudy who opened the scoring, latching on to a through-ball from Eduardo Vargas before outpacing Schmelzer and firing past Burki from the right-hand side of the penalty area.