The Tinkoff rider timed his attack on the final climb of the race with just over 13km left in the gruelling 255km route from Bruges to Oudenaarde and held on to finish solo.
Three-time winner Fabian Cancellara (Trek-Segafredo) had to settle for second in his final season as a professional with Sep Vanmarcke (LottoNL-Jumbo) third.
"I feel very good. I am very happy. It was a super-hard race from the start until the finish, always full gas," Sagan said.
"It is very hard to work with the other guys because nobody wants to work with me and it is always better to drop everybody, but it's not easy."
The race was regularly interrupted by crashes, one of which eliminated Greg van Avermaet (BMC) with a broken collar bone after he a several team-mates crashed together.
Sagan dedicated the victory to Belgian riders Antoine Demoitie and Daan Myngheer, who died after recent race incidents.
Sagan and Michal Kwiatkowski (Sky) made a decisive move with about 40km left in Sunday's 255km race when they pulled away from the main pack and were quickly joined by Vanmarcke.
Cancellara decided to remain in the peloton along with defending champion Alexander Kristoff (Katusha), trusting his ability to close the gap later on in the race.
Sagan, however, did not wilt, while Cancellara had nobody to work with as he made his move to catch the world champion some 23km from the line.
After the Milan-San Remo, the Tour of Flanders was the second of the season's 'Monument' races, the name given to cycling's five most revered one-day classics.
It will be followed next Sunday by the Paris-Roubaix, dubbed the ‘Queen of the Classics, the Liege-Bastogne-Liege race later this month and the Giro di Lombardia in October.
— CyclingCentral (@CyclingCentral) April 3, 2016