Miroslav Klose's only second league goal of the season after six minutes looked to have secured a hard-fought win for the Bundesliga leaders but Frankfurt substitute Juvhel Tsoumou levelled matters on 87 minutes, just two minutes after coming on.

Incredibly, Martin Fenin snatched a dramatic winner with a minute of regulation time remaining, slamming the ball past Bayern goalkeeper Joerg Butt from the narrowest of angles.

Despite the loss, Bayern stay two points clear of second-placed Schalke 04 on 56 points. Felix Magath's side can go top with victory against SV Hamburg on Sunday.

Later Saturday, third-placed Bayer Leverkusen could go ahead of Bayern on goal difference with victory at Borussia Dortmund.

Germany striker Klose hadn't netted in the Bundesliga since scoring as a substitute in Bayern's first game back after the winter break against Hoffenheim in January but the 31-year-old was clinical with the only clear chance he had at the Commerzbank Arena.

Mark van Bommel sent in a teasing cross early on, and a dozing Frankfurt defense allowed Klose time to control the ball with his chest before steering a low shot past goalkeeper Oka Nikolov.

Frankfurt refused to be intimidated, however, and dominated proceedings after the early setback and eventually got the result their efforts deserved.

First, an Alexander Meier header was cleared off the line by Daniel van Buyten on 20 minutes while a minute later Butt had to be at this best to tip a Benjamin Koehler header over the bar.

Pirmin Schwegler found the side-netting with a poorly directed shot eight minutes after the restart as Frankfurt continued to press while substitute Anatoliy Tymoshchuk should have wrapped matters up for Bayern with 20 minutes remaining but was denied by Nikolov.

Bayern paid the price for that miss three minutes from time when an underhit David Alaba backpass meant a Butt clearance rebounded off the challenging Tsoumou and into the Bayern net.

The 17-year-old left-back was also at fault two minutes later as he left Fenin unmarked in the area to fire home the winner.

Werder Bremen kept their hopes of European qualification alive after twice coming from behind to eventually beat VfL Bochum 3-2.

Stanislav Sestak put the visitors in front after 14 minutes but a clinical finish from substitute Claudio Pizarro levelled the tie on 58 minutes.

Bochum were back in front just five minutes later through Zlatko Dedic but that lead last just two minutes before Marko Marin drew Bremen level once again.

Torsten Frings secured all three points for the home side with a deflected effort 10 minutes from time to move Bremen up to fourth place on 45 points, level with Dortmund and two clear of Hamburg although both clubs have yet to play this weekend.

VFB Stuttgart felt no ill effects their 4-0 drubbing by Barcelona in the Champions League, cruising to a 2-0 victory over struggling Hanover 96 thanks to a brace from Ciprian Marica.

SC Freiburg boosted their chances of escaping relegation with a 1- 0 victory over Mainz with Johannes Flum netting the only goal of the game after 10 minutes courtesy of a superb 25-meter strike.

In the day's other match, relegation threatened Nuremberg played out a goalless draw with Hoffenheim.

On Sunday, as well as Schalke versus Hamburg, champions VfL Wolfsburg play bottom club Hertha Berlin.

In a match played Friday, Cologne drew 1-1 with Borussia Moenchengladbach.