Julien Feret gave the home team the lead in the 64th minute and Romain Alessandrini made sure of victory 11 minutes later.
Garcia was given his marching orders for protesting against a decision by the referee in the 89th minute.
Rennes moved up to 12th in the table with seven points from as many games. Lille, without a victory since their opening game of the season, are one place below them on the same points.
Lille were on top before the break but they suffered after France midfielder Rio Mavuba was forced off through injury six minutes into the second half.
Feret poked Rennes in front after goalkeeper Mickael Landreau parried a Jonathan Pitroipa effort into his path.
Alessandrini then made it 2-0 when he chested the ball down and fired in spectacularly from 30 metres.
"We're in trouble, we can't seem to get there," Lille full back Mathieu Debuchy told BeIN Sport television.
The visitors were unlucky in the 66th minute when Aurelien Chedjou's header hit the bar and bounced down the wrong side of the line.
On Saturday third-placed Paris St Germain host Sochaux and Lorient, in fourth, travel to Evian Thonon Gaillard.
Leaders Marseille visit Valenciennes on Sunday when second-placed Lyon also entertain Bordeaux.