Sagan attacked escape companion Sep Vanmarcke (LottoNL-Jumbo) on the final ascent of the Paterberg to go solo. The 26-year-old Slovakian then had to time trial his way to the finish after the Paterberg to keep the chasing duo of Vanmarcke and Fabian Cancellara (Trek-Segafredo) at bay.
Sagan finished with around 20 seconds in hand over Cancellara, with Vanmarcke in third. Luke Rowe (Sky) finished in fifth place, boding well for next Sunday's Paris-Roubaix, with fellow Welshman Geraint Thomas (Sky) in 12th.
The first half of the race was punctuated by several mass crashes in the peloton that claimed several of the pre-race favourites. Greg Van Avermaet (BMC), Arnaud Démare (FDJ) and Tiesj Benoot (Lotto-Soudal) were all forced to withdraw with injuries.
Starting under sunny skies in Bruges, the first hour of racing was very fast-paced and no escape group was allowed to form. Finally, six riders did break the elastic and break free: Lukas Postlberger (Bora-Argon18), Imanol Erviti (Movistar), Gijs Van Hoecke (Topsport Vlaanderen-Baloise), Hugo Houle (Ag2r), Wesley Kreder (Roompot-Oranje Peloton) and Federico Zurlo (Lampre-Merida).
The six built up a lead of around four minutes over the peloton but gradually started to fracture as the race made its way over the series of 18 categorised climbs and a further seven cobbled sectors.
Andre Greipel (Lotto-Soudal), Nils Politt (Katusha), Dmitriy Gruzdev (Astana), Dimitri Claeys (Wanty-Groupe Gobert) rode across to join Houle, Van Hoecke and Erviti as the race unfolded. And as Houle was dropped, Dylan Van Baarle (Cannondale) and Stijn Vandenbergh (Etixx-QuickStep) made the junction with 40km to go.
By the time the lead group hit the Koppenberg, the race started to split into pieces. Sagan, Vanmarcke and Michal Kwiatkowski (Sky) took off from the main group in what would turn out to be the race-winning move.
This trio caught up with the front break with 23.5km to go, forming a group of eight riders with a 28-second gap over the chase group into the final ascent of Oude Kwaremont.
Sagan and Vanmarcke were the strongest of the group over the climb, and continued to work as a duo into the Paterberg. As Vanmarcke faded, Sagan looked strong. Behind them, Cancellara was accelerating hard in pursuit.
>>> Mechanic hit by team car during Tour of Flanders (video)
Over the top of the Paterberg, Cancellara caught up with Vanmarcke but the two riders could not catch the lone Sagan out front.
After popping a celebratory one-handed wheelie after the finish, Sagan dedicated his win to pro riders Antoine Demoitié and Daan Myngheer, who lost their lives the previous weekend.
There was no victory celebration or fourth win for Cancellara in his final Tour of Flanders, but he waved to the crowds in farewell as he crossed the line.
Earlier in the day British world champion Lizzie Armitstead (Boels-Dolman) took a narrow victory over Swede Emma Johansson in the women's Tour of Flanders.
Watch: Tinkoff sports director explains how Peter Sagan won the Tour of Flanders
Result: Tour of Flanders 2016, 255km
1. Peter Sagan (Svk) Tinkoff in 6-10-42
2. Fabian Cancellara (Swi) Trek-Segafredo at 25 secs
3. Sep Vanmarcke (Bel) LottoNL-Jumbo at 27 secs
4. Alexander Kristoff (Nor) Katusha at 48 secs
5. Luke Rowe (GBr) Team Sky
6. Dylan Van Baarle (Ned) Cannondale
7. Imanol Erviti (Spa) Movistar
8. Zdenek Stybar (Cze) Etixx-QuickStep
9. Dimitri Claeys (Bel) Wanty Groupe Gobert
10. Niki Terpstra (Ned) Etixx-QuickStep at same time
Thank you for reading 5 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