After midfielder Yoann Gourcuff scored with a first-half header, Marouane Chamakh took advantage of a mistake by Bayern goalkeeper Hans-Jörg Butt to slot the second goal on the verge of injury-time.
“I should have been there for the first goal – it was my fault – then we weren’t given a clear penalty and (striker) Luca Toni missed two chances to score,” admitted captain Mark van Bommel after Bayern suffered their first home defeat in Europe for five years. “We tried everything in the second-half, but the ball wouldn’t go in. We didn’t play badly, we were better than them after the break, but it was hard out there.”
The French league leaders left Bavaria with three precious points while Bayern’s dreams of reaching the next phase are all but over after the defeat.
“We didn’t have much luck, in such an important game it was important to score and we didn’t,” said Bayern coach Louis van Gaal.
“We have to keep working, we should have had a penalty, but we didn’t play our best game.”
With two games left – at Juventus and home to Maccabi Haifa – remaining in the group stages, Bayern now need a miracle to qualify as the defeat leaves them third in the table six points behind leaders Bordeaux and four behind Juventus.
But Bordeaux are now in the knock-out phases even before Juventus visit the Stade Chaban-Delmas at the end of the month while facing a trip to Israel Maccabi Haifa next month.
After a slow start, Bayern had several clear chances to take the lead midway through the first-half, but were denied both by French goalkeeper Cedric Carrasso and bad fortune.
Van Gaal opted for Italian World Cup winner Toni and Germany striker Miroslav Klose as strikers and the pair squandered a host of chances to score. Germany star Bastian Schweinsteiger curled in a superb free-kick which Carrasso did well to palm around the post with half an hour gone.
And Klose was denied a clear chance to score after Toni headed across the face of the goal and Bordeaux defender Michael Ciani blocked the shot with his arm, but the referee missed what should have been a clear penalty.
Bordeaux took the lead when Brazil midfielder Mauricio found Gourcuff with an inch-perfect free-kick which the Frenchman headed past Butt on 37 minutes.
Van Gaal brought on Arjen Robben just after half-time almost a month after the Dutchman injured his knee in the 0-0 draw with Juventus.
The winger created several chances down the flanks, but van Bommel and Toni both squandered golden chances to equalise with Carrasso beaten, but fired wide.
With time running out, van Bommel fired a weak shot which gave Carrasso absolutely no problems, but at the other end, Butt came off his line too soon to leave Chamakh with a simple tap in on 89 minutes.