The Dane from Deceuninck-Quick-Step got the better of former champion Tejay van Garderen (EF Education First), Gianni Moscon (Ineos) and Tadej Pogacar (UAE Team Emirates) on the final incline to the line after a tough day that featured more than 4 800m of vertical climbing from Rancho Cordova.
The four riders were part of a final selection of 10 that hit the short final climb together. They quickly moved ahead as Van Garderen drove the pace but it was Asgreen who got the jump on him as they came around the final turn to finish in 6:17:11.
Van Garderen, who finished in the same time for an overall time of 9:31:19, took over yellow from Peter Sagan, who lost ground on the category two climb to Kirkwood Summit in the latter half of the stage.
Moscon moved into second, six seconds back, with Asgreen rounding out the overall podium a further second back.
View more results below.
Stage two results
1. Kasper Asgreen (DEN) Deceuninck-Quick Step 6:17:11
2. Tejay van Garderen (USA) EF Education First
3. Gianni Moscon (ITA) Ineos 0:00:04
4. Tadej Pogacar (SLO) UAE Team Emirates 0:00:10
5. Maximilian Schachmann (GER) Bora-Hansgrohe 0:00:16
6. Jonas Gregaard Wilsly (DEN) Astana 0:00:27
7. Rob Britton (USA) Rally UHC Cycling
8. Sergio Higuita (COL) EF Education First 0:00:31
9. Rigoberto Urán (COL) EF Education First
10. George Bennett (NZL) Jumbo-Visma
1. Tejay van Garderen (USA) EF Education First 9:31:19
2. Gianni Moscon (ITA) Ineos 0:00:06
3. Kasper Asgreen (DEN) Deceuninck-Quick Step 0:00:07
4. Tadej Pogacar (SLO) UAE Team Emirates 0:00:16
5. Maximilian Schachmann (GER) Bora-Hansgrohe 0:00:22
6. Rob Britton (USA) Rally UHC Cycling 0:00:33
7. Jonas Gregaard Wilsly (DEN) Astana
8. David de la Cruz (SPA) Ineos 0:00:34
9. Felix Großschartner (AUT) Bora-Hansgrohe 0:00:35
10. George Bennett (NZL) Jumbo-Visma 0:00:36
22. Louis Meintjes (RSA) Dimension Data +0:00:48
71. Reinardt Janse Van Rensburg (RSA) Dimension Data +0:17:52
119. Jay Thomson (RSA) Dimension Data +0:26:47