Bayern Munich bounced back from last weekend's defeat at home to Bayer Leverkusen by demolishing Hamburg 3-0 in their own back yard.
Bastian Schweinsteiger gave the Bundesliga leaders the lead late in the first half and Thomas Muller and Toni Kroos wrapped up Bayern's ninth win in 10 games with two goals early in the second 45 minutes.
Hamburg were unable to respond as Bayern enjoyed the best possible preparations for their Champions League match with Lille in midweek. Both sides clearly wanted to win the game, resulting in an entertaining match with chances at both ends.
Schalke twice equalised but could only watch as Sven Schipplock scored the 3-2 winner for Hoffenheim in added time as the visitors missed a chance to keep pace with Bundesliga leaders Bayern Munich.
Kevin Volland gave Hoffenheim the lead in the 13th minute with Roman Neustadter equalising in the 37th minute. Roberto Firmino's penalty after 67 minutes pushed Hoffenheim ahead once again before Atsuto Uchida equalised again in the 82nd minute. But Schipplock scored a minute into injury time to seal the victory.
Hoffenheim ended a four-match winless streak to improve to 11 points while Schalke suffered their first defeat away from home to remain on 20 points.
Borussia Dortmund were held to a draw for the second time in succession by Stuttgart, only this time there were no goals at the Westfalenstadion.
The last meeting of these two teams towards the end of last season went down in history as one of the most dramatic games on record with eight goals shared, but there was not to be a repeat.
Robert Lewandowski hit the woodwork for Dortmund and Stuttgart goalkeeper Sven Ulreich made a string of saves, but there were also chances for the visitors in an entertaining goalless draw.
Freiburg came from a goal down to ensure a 1-1 draw with Borussia Monchengladbach.
Igor de Camargo gave Gladbach the lead in the 49th minute but Daniel Caligiuri equalised from the spot in the 77th minute. The draw leaves Freiburg two points behind their opponents in the Bundesliga table.
Hannover returned to winning ways at the AWD-Arena with a comfortable 2-0 victory over Augsburg.
Mame Biram Diouf scored the opener in the 26th minute and Lars Stindl made the game safe five minutes from time.
Timo Gebhart scored the only goal of the game as Nurnberg beat Wolfsburg 1-0 to end a six-match winless streak and found the net for the first time since late September.
Gebhart's goal in the 76th minute secured Nurnberg their first victory at home this season and ended a 453-minute scoreless stretch dating back to September 26.