The world champion looked at ease as Team Sky controlled the front of the bunch into the final climb, and was easily able to follow early moves from the likes of Philippe Gilbert (Quick-Step Floors) and yellow jersey Greg Van Avermaet (BMC).
As a reduced group approached the final few hundred metres, it was Sonny Colbrelli (Bahrain-Merida) who provided the only real challenge for green jersey Sagan in the sprint, but he faded after going early and no-one was able to stop Sagan taking the win.
Van Avermaet retained the yellow jersey after finishing safely in the bunch, while the main GC favourites all finished with the front group. Alejandro Valverde (Movistar) was best placed among them in fourth with Dan Martin (UAE Team Emirates) not far behind in sixth.
How it happened
The Tour de France departed from Lorient for the 12th time in the race's 105 editions on Wednesday's stage five, which would see the riders take on a difficult, hilly course across 204.5km to Quimper.
Sylvain Chavanel and Lilian Calmejane (Direct Energie), Jasper De Buyst (Lotto Soudal), Julien Vermote (Dimension Data), Toms Skujiņš (Trek-Segafredo), Elie Gesbert (Fortuneo-Samsic) and Nicolas Edet (Cofidis) formed the day's breakaway early on.
They reached a maximum gap of around 4-30, with BMC charged with keeping them in reach as they looked to preserve Greg Van Avermaet's yellow jersey.
Chavanel went clear on the first climb of the Côte de Kaliforn, taking the KOM point at the top but continuing to push on with well over 90km to go and putting a gap of 35 seconds into his former breakaway companions.
That meant that his team-mate Calmejane was able to sit on and do no work in the second group, but their chances of making it to the finish weren't helped by losing Elie Gesbert with about 85km to go, who inexplicably crashed into the grass verge while descending down a straight road.
The Frenchman was able to get back on his bike, but was forced to return to the peloton behind.
The peloton behind began to increase the pace as they took on the lumpy final 100km of the course, with sprinters like Mark Cavendish (Dimension Data) and Marcel Kittel (Katusha-Alpecin) set to have a long ride to the finish after getting dropped on an unclassified climb.
As Chavanel ploughed on alone in search of more KOM points, his gap fell from around 30 seconds to about 16 seconds with Toms Skujiņš attacking and dropping De Buyst and Vermote.
The lone leader was able to crest the Côte de la Roche du Fau to take two more KOM points, and was joined by the three chasers behind shortly after the climb with 60km to go. The four breakaway men then continued to work together with three minutes on the bunch behind.
As the breakaway reached 50km to go, there was just 1-44 between them an ever hastening bunch.
Chavanel and Edet were unable to hack the pace on the next and potentially the most difficult classified climb of the day of the Côte de Menez Quelerc'h.
Calmejane and Skujiņš were able to crest the top with the Latvian able to take maximum points, but their chances of staying out front were looking slim with just 1-54 at the 44.8km to go mark at the top of the climb.
Edet was able to rejoin the two leaders on the descent and through to the final classified climb of Côte de la montagne de Locronan, but their gap was under a minute on that final climb.
Frenchman Edet was once again dropped and the remaining two breakaway riders held at around 55 seconds into the last 19km.
By 12km to go though it was clear it wasn't going to happen for Calmejane and Skujiņš, and they were eventually hoovered up by the BMC led peloton with just over 11km to go.
That was in part thanks to Julian Alaphilippe (Quick-Step) chasing three bonus seconds at the intermediate bonus, with yellow jersey Van Avermaet taking two seconds as he chased him over the line.
Direct Energie then tried to go again with Rein Taaramäe going out and gaining 18 seconds.
The difficult terrain towards the final climb meant it never looked likely for the Estonian, and he was regathered with just 5.7km remaining.
It was then altogether towards the finale, with Sky taking control on the front. That kept the pace high enough in the final couple of kilometres to prevent any early attacks, but it was Philippe Gilbert to go first with 750m to go.
He was quickly tracked by Van Avermaet, Sagan and his team-mate Alaphilippe, and there was nothing anyone could do to stop the world champion from sprinting to his second win of the Tour.
The Tour continues with another difficult hilly stage on Thursday with a 181km stage from Brest to the Mûr de Bretagne.
Tour de France 2018, stage five: Lorient to Quimper (204.5km)
1 Peter Sagan (Svk) Bora-Hansgrohe, in 4-48-06
2 Sonny Colbrelli (Ita) Bahrain-Merida
3 Philippe Gilbert (Bel) Quick-Step Floors
4 Alejandro Valverde (Esp) Movistar Team
5 Julian Alaphilippe (Fra) Quick-Step Floors
6 Daniel Martin (Irl) UAE Team Emirates
7 Greg Van Avermaet (Bel) BMC Racing Team
8 Søren Kragh Andersen (Den) Team Sunweb
9 Andrea Pasqualon (Ita) Wanty-Groupe Gobert
10 Vincenzo Nibali (Ita) Bahrain-Merida, all same time
General classification after stage five
1 Greg Van Avermaet (Bel) BMC Racing Team, in 18-22-00
2 Tejay van Garderen (USA) BMC Racing Team, at 2s
3 Philippe Gilbert (Bel) Quick-Step Floors, at 3s
4 Geraint Thomas (GBr) Team Sky, at 5s
5 Julian Alaphilippe (Fra) Quick-Step Floors 0:00:06
6 Bob Jungels (Lux) Quick-Step Floors, at 9s
7 Tom Dumoulin (Ned) Team Sunweb, at 13s
8 Søren Kragh Andersen (Den) Team Sunweb, st
9 Rigoberto Uran (Col) EF Education First-Drapac, at 37s
10 Rafal Majka (Pol) Bora-Hansgrohe, at 52s
Thank you for reading 20 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1