Sagan held off a late charge from Sonny Colbrelli to win from a reduced sprint after a big crash in the final two kilometres held up the peloton.
But there were only a handful of riders left to contest stage honours after a nasty right-hander two kilometres from the finish saw a number of riders hit the deck.
With stage one winner Fernando Gaviria among those held up, Bora-Hansgrohe's Sagan will move into the yellow jersey on bonus seconds after finishing second on Saturday.
Team Sky, who saw Chris Froome lose 51 seconds to most of his main general classification rivals after a stage one fall, successfully dodged the crash, and will not suffer any time losses with the incident coming inside the final three kilometres.
Mark Cavendish's hopes of a 31st Tour stage win were also scuppered by the crash but the Dimension Data rider stayed upright.
The dramatic pile-up capped another nervous finale to the race, with Mitchelton-Scott's Adam Yates among those to fall in the final 35km. The Bury rider, who like Froome lost time thanks to a crash on the opening stage, quickly made his way back to the pack but with his left shoulder scuffed up.
Astana's key man Luis Leon Sanchez was not so lucky, forced to abandon after hitting the deck hard, while Romain Bardet's domestique Sebastian Dillier also fell.
Those incidents came as the speed picked up and the peloton reeled in Sylvain Chavanel, the Direct Energie rider who had been away sole since the 35km marker on the 182.5km stage from Mouilleron-Saint-Germain.
The 39-year-old, competing in a record 18th Tour de France and his 350th stage, enjoyed his day in the spotlight, sitting up to high-five fans in the towns early in the day as the peloton was happy to let him go.
He was finally caught with 13km left, setting up an intense battle for position on the road into La Roche-sur-Yon.
Marcel Kittel, winner of five stages in last year's Tour, saw his hopes of contesting the sprint effectively ended by a flat rear tyre with 7.5km to go, but the bigger incident was still to come.