Ludovic Obraniak scored the only goal as Bordeaux made it two wins from two to start the new Ligue 1 season.
Having missed a penalty in the first half, the home side finally made the breakthrough when Obraniak ended a goalmouth scramble in the 75th minute by firing past keeper Benoit Costil.
Rennes pressed for a late equaliser but could not find a way through, with Cedric Carrasso's late save from Jean Armel Kana-Biyik ensuring the three points for the hosts.
Both sides had early chances, Fahid Ben Khalfallah shooting into the side netting for the hosts before Rennes' new signing Sadio Diallo headed Kevin Theophile-Catherine's cross wide.
The penalty came in the 20th minute and was a controversial decision, with Rennes' John Boye harshly adjudged to have fouled Yoan Gouffran. Costil ensured justice was done, though, diving to his left to keep out Henri Saivet's effort.
Carrasso had an awkward moment just after the half-hour, but managed to push away Vincent Pajot's dipping long-range effort.
Costil saved Gouffran's 25-yard drive to ensure the score remained goalless going into half-time.
The second half started slowly, with neither team able to muster a serious effort on goal until the 70th minute when Costil turned Nicolas Maurice-Belay's cross behind and Cheick Diabate headed Obraniak's corner wide.
But the goal came five minutes later. A chaotic scene in the Rennes goalmouth culminated in Kana-Biyik blocking Diabate's shot before Obraniak followed up to finish right-footed.
Rennes responded and Carrasso was almost embarrassed by Diallo's cross, but recovered to turn the ball behind.
Substitute Abdoulaye Sane's shot found only the side netting and when Carrasso saved with his feet to keep out Kana-Biyik's left-footed effort from 12 yards, Bordeaux were safe.