Peter Sagan won stage 16 of the Tour de France in a photo-finish ahead of Alexander Kristoff, while Chris Froome stayed safe in the yellow jersey.

World champion Sagan took his third stage victory of this Tour by a tiny margin at the end of a 209km stage from Moirans-en-Montagne to Berne.

Team Sky's Froome was in the leading pack as they crossed the line to ensure he keeps yellow heading into Tuesday's rest day.

Team Dimension Data’s Mark Cavendish, winner of four stages in this Tour, stayed with the final group on the cobbled climb but did not have the legs to engage in the sprint and rolled home in 22nd place.

The result leaves Froome one minute and 47 seconds clear in the yellow jersey, with Trek-Segafredo's Bauke Mollema second.

Briton Adam Yates of Orica-BikeExchange is third, two minutes and 45 seconds back and leading the young riders' classification, with Movistar's Nairo Quintana fourth, a further 14 seconds down.