Sagan out-paced Greg Van Avermaet (BMC Racing) and Nathan Haas (Dimension Data) to take his 15th career win in the race. British rider Tao Geohegan Hart (Axeon Hagens Berman) placed fifth.
Frenchman Julian Alaphilippe (Etixx-QuickStep) safely finished in 10th place to retain his overall lead.
Earlier, Mark Cavendish (Dimension Data) made an unusual appearance in the day's escape group. He joined six other riders: Gregory Daniel (Axeon Hagens Berman), Michael Morkov (Katusha), Timo Roosen (LottoNL-Jumbo), Tanner Putt (UnitedHealthcare), Ryan Anderson (Direct Energie) and William Routley (Rally Cycling).
The seven riders worked well together over the longest stage of the race, keeping momentum until the final climb, when all but Gregory Daniel were swallowed up by the chasing peloton with 5km to go.
As the riders approached the Laguna Seca raceway up a testing climb, Daniel was caught and the peloton started to split apart. Ruben Guerreiro (Axeon Hagens Berman) and Haas both launched unsuccessful solo attacks on the iconic race track.
As the lead group swept through the twisting corkscrew section and round into the final bend, Sagan was in prime position. He opened up his sprint and fended off his rivals to take the win.
Thursday's stage is virtually all one enormous long climb, starting at near sea level in Lodi and then ascending to 2615 metres above sea level at the Carson Pass summit. From then on it's an undulating route to the finish at South Lake Tahoe. Thursday also signals the start of the women's Amgen Tour of California, which navigates an abridged version of the men's route.
>>> Tour of California 2016: Stage by stage
Amgen Tour of California 2016, stage four: Morro Bay to Monterey County, 215km
1. Peter Sagan (Svk) Tinkoff
2. Greg Van Avermaet (Bel) BMC Racing
3. Nathan Haas (Aus) Dimension Data
4. Brent Bookwalter (USA) BMC Racing
5. Tao Geoghegan Hart (GBr) Axeon Hagens Berman
6. Neilson Powless (USA) Axeon Hagens Berman
7. Rohan Dennis (Aus) BMC Racing
8. Jurgen Van Den Broeck (Bel) Katusha
9. Rob Brotton (Can) Rally Cycling
10. Julian Alaphilippe (Fra) Etixx-QuickStep
General classification after stage four
1. Julian Alaphilippe (Fra) Etixx-QuickStep
2. Peter Stetina (USA) Trek-Segafredo at 22 secs
3. George Bennett (NZl) LottoNL-Jumbo at 37 secs
4. Brent Bookwalter (USA) BMC Racing at 40 secs
5. Neilson Powless (USA) Axeon Hagens Berman at 43 secs
6. Laurens Ten Dam (Ned) Giant-Alpecin at 49 secs
7. Rohan Dennis (Aus) BMC Racing at 1-01
8. Samuel Sanchez (Spa) BMC Racing at 1-01
9. Rob Britton (Can) Rally Cycling at 1-12
10. Haimar Zubeldia (Spa) Trek-Segafredo at 1-15
Thank you for reading 20 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