Paolo Savoldelli claimed his second Giro d'Italia title in four years after staying out of trouble on the final stage from Albese con Cassano to Milan.
Savoldelli also won the Giro in 2002
The Italian, who rides for Lance Armstrong's Discovery Channel team, took victory by 28 seconds from compatriot Gilberto Simoni.
Jose Rujano of Venezuela was third overall, 45 seconds behind Savoldelli.
Alessandro Petacchi edged out Erik Zabel in a group sprint to record his fourth stage victory of the race.
Savoldelli, who also won the Giro in 2002, almost let his victory chances slip on Saturday's tough mountain stage to Sestriere.
But the 32-year-old used his descending skills to limit his losses in the final kilometre of the 190-km stage.
"This victory pays me back for the crashes and injuries that have stopped me racing for the last two years," he said.
"People said my bad luck would end and, by winning the Giro, it has.
"It was difficult to make a comeback after twice breaking bones and suffering facial injuries, but I never gave up."
Savoldelli will ride with team-mate Armstrong at the Tour de France in July.
But he has made it clear he will sacrifice his own chances to help the Texan enter retirement with a seventh Tour victory under his belt.
British riders Charlie Wegelius and Bradley Wiggins had a mixed race.
Wegelius was an impressive 46th overall, 90 minutes off Savoldelli's overall time, while Wiggins was back in 123rd - two hours further back.
Giro d'Italia stage 20 results:
1 Alessandro Petacchi (It) Fassa Bortolo 3:24:08
2 Erik Zabel (Ger) T-Mobile same time
3 Robert Foerster (Ger) Gerolsteiner
4 Mirco Lorenzetto (It) Domina Vacanze
5 Marco Velo (It) Fassa Bortolo
6 Paride Grillo (It) Panaria
7 Isaac Galvez (Sp) Illes Balears
8 Mark Renshaw (Aus) Francaise des Jeux
9 Manuele Mori (It) Saunier Duval
10 Henk Vogels (Aus) Davitamon-Lotto
1 Paolo Savoldelli (It) Discovery Channel 91:25:51
2 Gilberto Simoni (It) Lampre-Caffita 28 seconds behind
3 Jose Rujano (Ven) Colombia-Selle Italia 45secs
4 Danilo Di Luca (It) Liquigas 2:42
5 Juan Manuel Garate (Sp) Saunier Duval 3:11
6 Sergei Gontchar (Ukr) Domina Vacanze 4:22
7 Vladimir Karpets (Rus) Illes Balears 11:15
8 Pietro Caucchioli (It) Credit Agricole 11:38
9 Marzio Bruseghin (It) Fassa Bortolo 11:40
10 Emanuele Sella (It) Panaria 12:33