Eintracht Frankfurt 1-3 Bayern Munich
Bayern's fourth win in their past five games means they have a 10-point lead over Werder Bremen with five matches to play.
Frankfurt pulled ahead in the 29th minute through Benjamin Kohler, but watched on as Daniel van Buyten equalised at the hour mark before Luca Toni scored a brace within 11 second-half minutes to decide the game.
Frankfurt have now lost their past three games to remain on 42 points and in eighth place.
The hosts nearly grabbed the lead in the third minute, but Bayern keeper Michael Rensing got his hand on Ioannis Amanatidis' shot with Van Buyten clearing off the line.
Frankfurt did pull ahead in the 29th minute though when Bayern's Andreas Ottl lost the ball in midfield and Patrick Ochs was sent down the right wing before one-timing a high cross to the far left-hand post where Kohler headed past Rensing.
The hosts continued to threaten and had a great chance to double their lead just before the break when Martin Fenin raced past Rensing, but unable to get a shot away decided to pass back to Amanatidis, who fired well wide.
Frankfurt missed another chance to extend their lead when Fenin's 59th-minute shot was deflected off Rensing's knee and against the crossbar.
And Bayern equalised a minute later as Van Buyten stood alone to hammer home a header off a corner.
Frankfurt appeared to regain the lead in the 66th minute, but Amanatidis had a goal disallowed for offside.
Bayern then took the lead 10 minutes later through Italy striker Toni.
Bastian Schweinsteiger worked his way to the right side of the penalty area before passing to Toni, who blasted home from four yards.
Munich made it 3-1 on a counter-attack in the 85th minute when Jan Schlaudraff received a long pass down the right wing and fed Toni for his 20th goal of season.