Goals from Luca Toni and Franck Ribery were enough for Bayern against a Karlsruhe side which started the day in fifth place.

Bremen came unstuck against defending champions Stuttgart in spectacular fashion, going down 6-3 at the Gottlieb-Daimler Stadion.

Hugo Almeida gave Thomas Schaaf's side an eighth-minute lead but a Mario Gomez double turned the match in the home side's favour.

Sebastian Boenisch made it 2-2 but Gomez completed his hat-trick six minutes later and Cacau added a fourth for Stuttgart midway through the second half.

Markus Rosenberg gave the visitors renewed hope but a Per Mertesacker own goal and a late Cacau strike completed the scoring on a remarkable afternoon.

Bremen's frustration boiled over in the final minute with Mertesacker seeing red for hacking down Gomez.

Schalke built on their midweek Champions League elimination of Porto with a 2-0 win at Arminia Bielefeld.

Gustavo Varela put the Royal Blues ahead and Halil Altintop doubled their lead in the 74th minute.

Wolfsburg moved up to eighth with a 3-0 win against Energie Cottbus - Marcelinho's double adding to Christian Gentner's opener.

Cottbus' defeat saw them slip to the foot of the table, beneath Duisburg, who drew 1-1 at home to Hansa Rostock.

Ivica Grlic put Duisburg ahead but Victor Agali levelled for Hansa after 20 minutes.

Eintracht Frankfurt and Bochum also drew 1-1.

Faton Toski put Eintracht ahead but Mimoun Azaouagh equalised for the visitors midway through the second half.

Marko Pantelic's second-half equaliser earned Hertha Berlin a 1-1 draw at Borussia Dortmund on Friday night.

Sebastian Kehl gave the hosts the lead on the stroke of half-time before Pantelic levelled five minutes into the second period.

On Sunday, third-placed Hamburg visit second-bottom Nurnberg while Bayer Leverkusen, in fourth, host mid-table Hannover.