The Slovakian rider had gone on the attack in the final 20km, leaving the peloton trailing far behind but taking with him nine other riders in a breakaway.
It was Cannondale's Sagan who claimed the victory his break deserved, however, with Sagan edging Arnaud Demare (FDJ) and Alexander Kristoff (Katusha) in a breathtaking sprint to the line which saw a just a few centimetres between the first three riders.
There was some suggestion that Sagan had veered across Demare, but race officials deemed that his move across the road had been just part of his normal sprinting.
The main peloton - which included Mark Cavendish and Tom Boonen - eventually finished 19 seconds behind Sagan.
The winner claimed that he hadn't even intended to win - just to avoid getting into difficulties.
"Today’s win is more by chance than an objective,” said Sagan. “The strategy for the stage was to let my team-mates find a good break and make their own race.
"My personal goal was to be in the front and avoid risks. The group didn’t let any riders go so in the final I tried to escape and see what could happen.
"When the advantage was enough, I gave the responsibility to lead to the other riders.
"Of course I like to win and if there’s the chance to take one, I’ll do it. The
"final sprint? The last bend turned to the left and it’s normal to move a little to the right. I didn’t change my direction on purpose to close off Demare.
“The stage was also good as I look ahead to the Tour of Flanders. We’ll see tomorrow how the stage will be. I hope for an easy day to don’t want to spend too much energy.
"I still feel good and my intention is to round off my form to be at the top on Sunday. The only thing I can’t train is luck!"
1 Peter Sagan (Svk) Cannondale Pro Cycling 5:00:27
2 Arnaud Demare (Fra) FDJ
3 Alexander Kristoff (Nor) Katusha
4 Sylvain Chavanel (Fra) Omega Pharma-Quick Step
5 Oscar Gatto (Ita) Vini Fantini-Selle Italia
6 Niki Terpstra (Ned) Omega Pharma-Quick Step
7 Maxime Vantomme (Bel) Crelan-Euphony
8 Jerome Cousin (Fra) Team Europcar
9 Davide Cimolai (Ita) Lampre-Merida
10 Johan Le Bon (Fra) FDJ