Hertha Berlin are now only one point above Bayern and Wolfsburg after losing to Stuttgart.
Last Updated: 21/03/09 6:01pm
The race for the Bundelsiga title was blown wide open after leaders Hertha Berlin suffered a shock defeat at Stuttgart.
Brazilian striker Cacau gave the hosts the lead just after half-time with a right-footed shot and only minutes later Sami Khedira headed in a cross by former Aston Villa player Thomas Hitzlsperger to put the game beyond Hertha.
Wolfsburg continued their impressive run of form with a seventh consecutive Bundesliga victory against Arminia Bielefeld.
Visitors Wolfsburg took the lead when 23-year-old midfielder Christian Gentner found the net on 19 minutes. Brazilian Grafite then doubled their advantage in the second half before Ashkan Dejagah added a third in the dying minutes.
Jose Ernesto Sosa's goal for Bayern Munich was enough to earn victory against bottom side Karlsruhe at the Allianz Arena.
The results mean that three clubs - Hertha, Bayern and Wolfsburg - are now separated by only one point at the top of the table.
Elsewhere, Bayer Leverkusen drew 1-1 with Eintracht Frankfurt. Alexander Meier put Frankfurt ahead after 16 minutes but Leverkusen equalised shortly before half-time when Michal Kadlec slotted home from close range.
Borussia Dortmund recorded a narrow victory over Werder Bremen, Swiss international Alexander Frei scoring the only goal on 64 minutes when he slotted home a penalty won by Nelson Valdez.
A Milivoje Novakovic double condemned strugglers Energie Cottbus to a home defeat at the hands of Cologne. The Slovenian scored from close range on 51 minutes then added a penalty five minutes later.
Hoffenheim's search for a win continued as they were only able to salvage a 2-2 draw with Hannover 96.
Selim Teber converted a penalty after Andreas Beck was fouled in the box but the away side hit back almost immediately when Hanno Balitsch slotted a left-footed shot into the net.
Mario Eggimann headed home to give Hannover the lead but Brazilian player Wellington managed to level the scores late in the game.