Lyon dominated the first-half but Clement Grenier and Maxime Gonalons were denied by Cedric Carrasso as Bordeaux held firm.
The visitors went ahead in the 65th minute when Benoit Tremoulinas played a fine one-two with Ludovic Obraniak and curled his shot past Remy Vercoutre.
Lyon piled the pressure but at the end of a counter attack, Cheick Diabate benefited from some shaky defending by Dejan Lovren to head home and make it 2-0 eight minutes from time.
Bordeaux, who are still unbeaten, climbed to fifth on 13 points, two points ahead of seventh-placed Valenciennes.
Elsewhere St Etienne and Stade Reims drew 0-0.