The Liquigas-Cannondale rider surged past Team Sky's Ben Swift at the death and took the line with Allan Davis of Orica-GreenEdge forced to settle for third.
Overall race leader Rui Costa finished in the bunch and remained in front in the general classification, still eight seconds clear of Frank Schleck and 15 ahead of Roman Kreuziger.
The 198.5km stage featured five category three and four climbs, mostly towards the end of the stage, but despite the undulations no breakaway bid stuck.
Many tried, with Rubens Bertogliati amongst a group of five who escaped at about 30km, only to have to drop back when he realised he had effectively ghosted into the overall lead, thus dooming the group.
The quartet, featuring Baden Cooke, Vicente Raynes, Matteo Montaguti and Troels Ronning Vinther, gradually built up a five-minute lead, but saw it whittled down in the later stages and they were all reeled in with 2km to go.
Swift had the early edge in the inevitable sprint, but Sagan, who has now won 13 races and stages this season, judged his push to perfection.