Hagen, 21, powered ahead in the final straight to clinch the stage win
Edvald Boasson Hagen of Norway won the seventh stage of the Giro d'Italia as the race crossed back into Italy.
Danilo Di Luca held on to the overall lead as most of the pre-race favourites stayed with the main pack to avoid accidents on the rain-covered streets.
Boasson Hagen pulled away in a late sprint to cover the 244km leg in five hours, 56 minutes, 53 seconds.
Robert Hunter of South Africa crossed the line second and Pavel Brutt of Russia was third.
Italians Davide Vigano and Alessandro Bertolini completed the top five on the day.
Four riders, Mauro Facci, Bartosz Huzarski, Serguei Klimov and Vladimir Isaichev, made an early move just outside Innsbruck and had raced nine minutes clear by the 24km mark.
They held on until the final climb as the rain made the conditions increasingly slippery.
Bertolini tried in vain to anticipate the sprint as the contenders jockeyed for supremacy over the final dozen kilometres and made for the line.
But it was Hagen, winner of last month's Gand-Wevelge race, who came through to secure his first Giro stage success only 24 hours after finishing second behind Michele Scarponi in the sixth stage to Mayrhofen.
The win, his first in Italy, was an early birthday present for the Norwegian, who turns 22 on Sunday.
Organisers decided to take the times for the overall standings with 3km to go because of the conditions to avoid a dangerous climax to the stage.
The main pack was 40 seconds behind with Brits Swift and Mark Cavendish finishing 10th and 11th respectively and Lance Armstrong 142nd, 58 seconds behind the winners and losing another 18 seconds to the overall leaders.
Di Luca, the 2007 Giro winner, maintained a 5-second lead on Thomas Lovkvist in the overall standings, with Michael Rogers third, 36 seconds back.
Saturday's eighth stage is a 209km leg from Morbegno to Bergamo.
Meanwhile, Armstrong's team started stage seven with the name of their sponsor, Astana, virtually blocked out.
Astana, one of the most successful cycling teams in the peloton, are currently facing an uncertain future following reports the Kazakh sponsors failed to pay the team's wages in April.
The International Cycling Union (UCI) have since sent a letter to Kazakhstan's cycling federation, notifying it of a possible suspension if wages are not paid by 31 May.
Adding spice to the situation is the fact that in recent weeks Alexandre Vinokourov, who helped form the team before his ban for doping in the wake of the 2007 Tour de France, has announced his intention to return to Astana.
Giro d'Italia stage seven result:
1 E Boasson Hagen (Norway/Columbia) 5hrs 56mins 53secs
2 R Hunter (South Africa/Barloworld ) Same time
3 P Brutt (Rus/Katusha )
4 D Vigano (Ita/Fuji )
5 A Bertolini (Ita/Diquigiovanni )
6 A Grivko (Ukr/Team ISD ) +31secs
7 M Goss (Aus/Saxo Bank ) +40secs
8 Allan Davis (Aus/Quick-Step ) +40secs
9 D Di Luca (Ita/Team LPR)
10 B Swift (GB/Katusha)
11 M Cavendish (GB/Columbia) +40secs
59 I Stannard (GB/Team ISD)
96 J Hunt (GB/CTT)
100 B Wiggins (GB/Garmin) +40secs
142 L Armstrong (US/Astana) +58secs
148 D Millar (GB/Garmin) +40secs
Overall race standings:
1 D Di Luca (Ita/Team LPR) 28hrs 08mins 48secs
2 T Lovkvist (Swe/Columbia) +5 secs
3 M Rogers (Aus/Columbia) +36 secs
4 L Leipheimer (US/Astana) +43 secs
5 D Menchov (Rus/Rabobank) +50 secs
6 I Basso (Ita/Liquigas) +1:06secs
7 C Sastre (Spa/Cervelo) +1:16secs
8 C Horner (US/Astana) +1:17secs
25 L Armstrong (US/Astana) +4:31secs
27 B Wiggins (GB/Garmin) +4:37secs
146 M Cavendish (GB/Columbia) +53:36secs