Christophe Galtier's side were in control after goals by Kasper Dolberg and Youcef Atal had put them 2-0 up, only for Rennes to reduce the deficit through Benjamin Bourigeaud and set up a thrilling finale.
Rennes have 31 points from 18 games, with Nice in fourth place on 30 and second-placed Olympique de Marseille on 32 with one game in hand while leaders Paris St Germain, who host Monaco later on Sunday, have 42 points from 17 matches.
Champions Lille are 11th on 25 points after a goalless home draw against 13th-placed Olympique Lyonnais.
Two minutes later, Nayef Aguerd's header hit the post as Rennes pushed for an equaliser but they suffered a major setback when striker Martin Terrier left the pitch unwell, to be replaced by Kamaleen Sulemana.
Dolberg had two more chances before the break but it was Atal who doubled the advantage six minutes into the second half with a superb strike into the roof of the net after being set up by the Denmark forward.
Dolberg came close again before Bourigeaud gave the hosts a lifeline when he beat Walter Benitez with a diving header.
The momentum swung and Rennes piled on the pressure but Benitez produced two superb saves to preserve the visitors' lead.