The Slovakian, who has won seven Tour de France stages as well as the points classification five times in a row, was on the right side of an early split of the peloton and kept a low profile until the final straight.
With only two team mates to help him, while the biggest cycling nations have nine-man teams, Sagan became the first road race rider to retain his rainbow jersey since Italian Paulo Bettini nine years ago.
The decisive moment happened around 180km from the finish line when crosswinds split the bunch and several top riders were trapped behind.
Belgium and Britain were on the right side of the split, it was not the case for Germany or France.
The front group was controlled by the Belgian and Italian teams. With two kilometres left, Dutchman Tom Leezer attacked and opened a decent gap before being reined in by the Belgians.
The 2005 world champion Tom Boonen launched the sprint slightly too early and there was nothing he could do when Sagan powered past after waiting for the right time to make his move.