With seven games left to play, Nimes leapfrogged its Brittany rival into 10th place, just five points behind fifth-place Marseille.
The match at Costieres stadium had been postponed to allow Rennes sufficient time to prepare for a Europa League match it lost to Arsenal last month.
Nimes put on an excellent defensive display and was clinical with its rare chances, as Renaud Ripart, Denis Bouanga and Antonin Bobichon all scored. Nimes defender Herve Lybohy had inadvertently put the teams level in the 40th minute by putting the ball in his own net.
Tempers frayed toward the end of the first half and both teams played with 10 men after the interval as Nimes captain Anthony Briancon was sent off for a foul on Hatem Ben Arfa and his Rennes counterpart Benjamin Andre earned a second yellow card.