Wolfsburg 1-3 Bayern MunichArjen Robben put Bayern ahead in the second minute and Daniel van Buyten added a second before the break.
The visitors were three up just before the hour when the ball ended up in the home net after Andrea Barzagli attempted to clear under pressure from substitute Franck Ribery.
Grafite missed a penalty but grabbed a late consolation for the struggling champions in the last minute.
Bochum 1-1 Bayer LeverkusenLeverkusen saw their two-point advantage at the summit evaporate as their four-game winning streak ended with a 1-1 draw at Bochum.
Leverkusen went ahead in the 45th minute through Eren Derdiyok, who collected a pass from Stefan Kiessling on the left, turned and struck into the bottom-left corner.
But Bochum equalised in the 68th minute when Lewis Holtby found Zlatko Dedic, who poked the ball past the out-charging goalkeeper.
Freiburg 0-0 SchalkeSchalke twice hit the woodwork and had a goal cruelly disallowed in a 0-0 draw at Freiburg as they missed a chance to gain meaningful ground on leaders Leverkusen.
Kevin Kuranyi hit the post with a header from from eight yards out, although Freiburg hit the goal frame themselves 10 minutes later with Mohamadou Idrissou's header striking the crossbar after a free-kick.
Schalke were robbed of a goal three minutes after the restart as Marcelo Bordon headed off the underside of the crossbar and the ball clearly crossed the goalline, television replays showed.
German Bundesliga Top Eight Teams
Team Pl W D L Fr Ag Pts Bayer Leverkusen 21 12-9-0 46:17 45 Bayern Munich 21 13-6-2 45:18 45 Schalke 04 21 12-6-3 31:15 42 Hamburg 21 9-9-3 40:24 36 Borussia Dortmund 21 10-6-5 30:26 36 Werder Bremen 21 8-7-6 39:25 31 Eintracht Frankfurt 21 8-7-6 28:29 31 Mainz 21 8-6-7 25:29 30