Frankfurt striker Martin Fenin, centre, and goalkeeper Oka Nikolov, right, celebrate winning Saturday's match against Bayern Munich, while another teammate looks on.Frankfurt striker Martin Fenin, centre, and goalkeeper Oka Nikolov, right, celebrate winning Saturday's match against Bayern Munich, while another teammate looks on. (Thomas Lohnes/Getty Images)

Substitutes Juhvel Tsoumou and Martin Fenin both scored in the final three minutes as Eintracht Frankfurt came from behind to beat Bundesliga leader Bayern Munich 2-1.

Bayern took the lead after six minutes thanks to a goal by Miroslav Klose but Eintracht wasted a number of good chances before capitalizing on two errors by 17-year-old Bayern defender David Alaba for goals in the 87th and 89th. The result broke Bayern's 19-match undefeated run in the Bundesliga.

"We played with courage and we tried to put them under pressure from the start," Eintracht coach Michael Skibbe said. "We got tired after 70 minutes but the substitutes gave us some fresh wind."

Schalke could rise to the top of the league if it beats Hamburg on Sunday.

In the late match, Lucas Barrios scored twice for Borussia Dortmund in a 3-0 win over Bayer Leverkusen, which missed a chance to go level on points with Bayern.

Also on Saturday, Werder Bremen beat Bochum 3-2, Stuttgart defeated Hannover 2-0, Freiburg edged Mainz 1-0 while Nuremberg and Hoffenheim drew 0-0.

Barrios scored twice in the space of 10 minutes to bring his total for the season to 15. His first came following a corner and he then finished off a neat move with Mohamed Zidan in the 60th minute.

Barrios had not practised all week because of a thigh strain and left the game to be replaced by Dimitar Rangelov, who completed the win in the 87th minute.

Dortmund jumped to fourth place, while Leverkusen stayed third but its title hopes suffered a blow after its second loss of the season. Bayern has 56 points, Schalke 54, Leverkusen 53 and Dortmund 48.

Klose opened the scoring in Frankfurt when he connected with a floated cross from captain Mark von Bommel that sailed behind the Eintracht defence. The Germany striker controlled the ball with his chest and slotted it inside the far post.

Joerg Butt protected Bayern's lead by diving to his left to turn away a shot from Benjamin Koehler with his finger-tips.

Daniel van Buyten then cleared off the line a header from Alexander Meier and Butt tipped over a close-range header from Koehler as Eintracht, which was missing several regulars through suspension, besieged Bayern's goal.

Butt was also busy at the start of the second half. He was nearly beaten by a lob from Sebastian Jung but managed to tip the ball over the crossbar.

Munich offence silent in 2nd half

Bayern did not threaten at the other end until the 70th minute, when substitute Anatoliy Timoshchuk collected a good throughball from Arjen Robben and attempted to round Oka Nikolov, only for Eintracht's goalkeeper to grab the ball.

With Bayern seemingly in control as Eintracht began to tire, Skibbe sent on Tsoumou and Fenin and they made the difference.

Alaba's ill-advised back-pass allowed Tsoumou to strike the ball past the advancing Butt for the tying goal.

"I made the most of his mistake," said Tsoumou, a 20-year-old Congo-born striker who usually plays for Eintracht's reserve team.

Alaba, a defender who recently became Bayern's youngest Bundesliga player of all time, had his day further ruined by Fenin, who faked past the Austrian player before driving the ball inside the far post.

The win ended Eintracht's three-game losing streak.

American midfielder Ricardo Clark, who joined Eintracht in January but has not played after a right calf injury, sat on the bench but did not make his Bundesliga debut.

Bayern coach Louis van Gaal believed the forced substitution of Van Buyten, who went off with swelling over his right eye, disorganized his defence, which was already missing the injured Martin Demichelis.

"That was one substitution we didn't need — we lost another central defender," van Gaal said.

Midfielder Bastian Schweinsteiger admitted the loss was a setback in the race for the title.

"You have to win on the road if you want the Bundesliga title and we haven't won the last three games away from home," Schweinsteiger said.

Werder Bremen had only two days to recover from being ousted from the Europa League following a 4-4 draw with Valencia, so coach Thomas Schaaf rested several stars against Bochum. They included Claudio Pizarro but the striker came on in the second half and scored a goal as Werder twice came from behind.

Stanislav Sestak put Bochum ahead after 14 minutes but Pizarro scored with a right-foot volley in the 58th.

Bochum regained the lead briefly thanks to a chipped goal by Zlatko Dedic in the 63rd, but Marko Marin tied the game two minutes later with a virtual carbon-copy strike.

Captain Torsten Frings, who also began the match on the bench, struck the winner in the 81st minute with a powerful, deflected right-foot volley from outside the penalty area.

Ciprian Marica scored both goals for Stuttgart, which recovered from a 4-0 drubbing by Barcelona in the Champions League in midweek.

Second-last Freiburg moved level on points with Hannover by edging Mainz thanks to a goal by Johannes Flum, earning his side a first win in 13 games.