Philippe Montanier's side will meet second-tier Angers next month for a place in the final after ending Lille's eight-match unbeaten run in style with goals from Kamil Grosicki and Romain Alessandrini.
Rennes sit 16th in Ligue 1 but entered the match on the back of a morale-boosting 1-0 win at Marseille on Saturday.
And they carried that form into Thursday's contest, as Grosicki fired the hosts into a 34th-minute lead.
Jean Makoun missed a great chance to double Rennes' lead on the stroke of half-time, shooting just wide after Lille goalkeeper Steeve Elana came off his line and failed to collect a cross.
Lille, who are third in Ligue 1, were unable to mount a response in the second half and eventually Rennes got their second goal, Alessandrini settling the tie in the 90th minute.
Rennes, who made the 2009 Coupe de France final but were stunned by second-tier Guingamp, have won the competition twice.
And they will fancy their chances of making the showpiece when they meet Angers, with a spot in the final against either Guingamp or Monaco up for grabs.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.