The away side started strongly and put Rennes on the back foot early on when Serge Gakpe got in a strike that just missed the target.
Nantes took the lead in the 17th minute through a fine finish from Filip Djordjevic.
The hosts began to get themselves into the game and had an opportunity through Nelson Oliveira, who could only put his shot wide of the mark.
Despite Rennes's resurgence, Nantes doubled their lead on 43 minutes after some great work from Chaker Alhadhur to find Gakpe.
Alejandro Bedoya had the chance to make it three just before half time, but his attempt flew wide of the post.
Rennes started the second half strongly and almost pulled one back on 53 minutes through Julien Feret, but the attacking midfielder's strike bounced back off the post.
Three minutes later, Oliveira did grab a goal for Rennes, calmly finishing to make it 2-1.
Gabriel Cichero almost extended Nantes's advantage, but could only head his effort wide.
Lucas Deaux made it 3-1 in injury time to secure all three points for Nantes.