Leaders Paris St-Germain suffered a second successive away defeat in Ligue 1 as Rennes claimed a deserved 1-0 victory.
Substitute Kylian Mbappe should have equalised when he raced through on goal but blazed wildly over the bar.
The defeat means PSG stay three points clear of second-placed Lens, who beat Auxerre 1-0 on Saturday.
It was a deserved victory for Rennes, who created the better chances and were defensively resilient as PSG pushed for an equaliser late on.
Christophe Galtier’s side, who lost away second-placed Lens on New Year’s Day, failed to muster a shot on target until the 81st minute when Juan Bernat’s volley was tipped over by Steve Mandanda.
Despite the defeat it was a memorable evening for teenager Warren Zaire-Emery, who became the youngest player to start a Ligue 1 game for PSG at the age of 16 years and 313 days.