Julien Feret set them on their way early on and Mevlut Erding made the game safe six minutes after half-time.
Rennes showed greater desire throughout, exemplified by Jonathan Pitroipa returning from the African Nations Cup specially to play in the match.
The Burkina Faso winger shot wide in the early stages but his side went ahead in the seventh minute when a neat passing move ended with Feret finishing calmly past keeper Laurent Pionnier.
Mevlut Erding failed to add a second after seizing on Hilton's woeful back-pass and was nearly punished at the other end, but Benoit Costil made a superb save from Gaetan Charbonnier, who then fired the rebound against the post.
The second half started much like the first, with an early Rennes goal. Pitroipa was the architect, setting up Erding for a routine finish.
Costil again thwarted Charbonnier and Hilton volleyed over from close range, but Rennes could have extended their lead as Erding sliced wide and Roman Alessandrini forced a good diving save from Pionnier.
Rennes will take on St Etienne in the April 20 final after Les Verts beat Lille 7-6 on penalties on Tuesday night.