Tijdens de 21 ritten werd er in totaal 3.442 km overbrugd. Naast het Italiaanse vasteland deed deze jubileumeditie van de Giro ook de Italiaanse eilanden Sardinië en Caprera en de buurlanden Frankrijk en Oostenrijk aan.
De Giro opende met een ploegentijdrit. Deze werd gewonnen door Liquigas, de ploeg van Danilo Di Luca, een van de favorieten voor de eindzege. Tot grote ergernis van Di Luca was het echter zijn ploegmaat Enrico Gasparotto die de finish als eerste passeerde en zich zo als eerst in het roze leiderstricot mocht hijsen.
De eerste rit in lijn ging tussen Tempo Pausania en Bosa over iets meer dan 200 kilometer. Het was Robbie McEwen die de tegenstand in de sprint te snel af was. Paolo Bettini werd tweede, Alessandro Petacchi werd ontgoocheld derde.
In de laatste etappe op Sardinië was het dan toch raak voor Petacchi. Na een sterke sprint was hij Robert Förster en Maximiliano Richeze te snel af. Robbie McEwen eindigde pas als vierde.
Na een rustdag, waarin het peloton zich naar het vasteland had verplaatst stond er al een etappe met finish bergop op het programma. Op de flanken van de slotklim naar Montevergine di Mercogliano vielen al enkele favorieten af. Toch werden er nauwelijks verschillen gemaakt op de slotklim, die niet erg steil was. De rit mondde uit in een sprint en die werd gewonnen door Danilo Di Luca. Daarmee nam de Italiaan ook de trui weer terug die hij de dag daarvoor weer was kwijtgeraakt aan ploegmaat Gasparotto.
De zesde etappe leek van tevoren een etappe voor de klassements- en heuvelrenners, maar het peloton deed het rustig aan. Daardoor kon een vlucht makkelijk wegrijden en zonder al te veel moeite voorop blijven. Marco Pinotti wist zich nog voor de sprint zeker van de roze trui en liet de zege aan zijn medevluchter Luis Laverde.
De etappe leek vooraf ideaal voor sprinters en eindigde dan ook in een massaspurt. De finish lag op het circuit van Mugello, een Formule 1-circuit dat eigendom is van Scuderia Ferrari. In een ideale sprint pakte Petacchi opnieuw de overwinning.
Een grote groep, met enkele subfavorieten, verzamelde zich al snel. Door de heuvelachtige eerste wedstrijdhelft waren er al veel sprinters gelost en waren er maar weinig ploegen die het achtervolginswerk opknapten. In de finale gingen Pavel Broett en Emanuele Sella op pad. Laatstgenoemde vertrok op het juiste moment, maar Paolo Bettini reed het gat dicht en vergooide zo zijn eigen kansen, want hij nam Kurt-Asle Arvesen mee in zijn wiel. Die won zo zijn tweede Girorit.
De tweede bergrit was een stuk zwaarder dan de eerste. Niet alleen was de slotklim steiler, ook de aanloop was lastiger en het was met een afstand van 250 kilometer de op een na langste rit van de ronde. Di luca viel een paar keer aan op de slotklim, maar het was Leonardo Piepoli die na een mooie solo de rit pakte. Di Luca eindigde als tweede, voor Andy Schleck die zich ontpopte tot een van de revelaties van de ronde.
De laatste kans voor enkele sprinters, waaronder McEwen, die met de bergen in het vooruitzicht besloten hadden na deze etappe op te geven. Ook deze rit liep weer uit op een massasprint, maar die was spectaculair te noemen. De eerste renners kwamen heelhuids over de streep, maar een groot deel van het peloton, waaronder de roze trui, ging onderuit in de natte straten van Pinerolo.
Saunier Duval besloot al op de eerste beklimming, de Agnelpas die ook de Cima Coppi was, het tempo op te voeren. Terwijl Yoann le Boulanger als eerste bovenkwam op de Agnelpas, vormde zich daarachter al een select groepje met favorieten. Piepoli, die enkele dagen geleden nog de etappe won, reed in dienst van Gilberto Simoni en hield het tempo in de groep tot de Col d'Izoard.
Op de Izoard probeerde Simoni een paar keer aan te vallen, maar dat lukte niet. Vlak voor de top ging Di Luca ervandoor. De roze trui werd in de afdaling weer teruggepakt maar wist in de steile slotkilometer wederom weg te rijden en te winnen.
Dertiende etappe
Dertiende etappe (klimtijdrit) - 25 mei Van Biella naar Santuario di Oropa over 13 km
De klimtijdrit werd gewonnen door Marzio Bruseghin. Piepoli en Di Luca strandden op een seconde van Bruseghin, terwijl Andy Schleck in het algemeen klassement de top-3 binnenkwam.
De etappe naar Bergamo werd een stuk spannender dan vooraf verwacht. Ongeveer halfweg koers sloegen Saunier Duval en Astana de handen ineen en er ontstond een kopgroepje met Gilberto Simoni erbij. Di Luca, Cunego, Schleck en nog enkele anderen waren niet vertegenwoordigd voorin. In de finale ging Simoni ervandoor maar met behulp van de RAI-motoren wist Stefano Garzelli zijn landgenoot nog te remonteren. Garzelli won, voor een zichtbaar ontgoochelde Simoni. Di Luca verloor uiteindelijk slechts 40 seconden.
Een kopgroep die bestond een paar samengesmolten groepjes viel in de finale uiteen totdat Riccardo Riccò en zijn ploegmaat Leonardo Piepoli als enige over waren gebleven. Riccò won de rit, maar in de achtergrond deed Eddy Mazzoleni uitstekende zaken. Mazzoleni reed weg en pakte veel tijd op de concurrentie. Daardoor steeg hij van de 9de naar de 2de plaats in het klassement. Di Luca pakte dan weer een ruime halve minuut op de rest en het leek nu wel erg lastig om hem nog van de eindzege af te houden.
Na een rustdag kreeg het peloton een heuvelachtige etappe voor de kiezen tussen Agordo en het Oostenrijkse Lienz. Stefano Garzelli won opnieuw, dit keer zonder hulp van de motoren. In het klassement veranderde er niets.
De etappe naar de beruchte Monte Zoncolan was de laatste bergrit en een van de laatste kansen voor de klassementsrenners om nog op te schuiven in de stand. Piepoli, die al de hele ronde sterk reed in de bergen, was ook vandaag weer vooraan te vinden. Samen met zijn ploeggenoot Simoni reed hij weg en Di Luca kraakte. Toch verloor hij uiteindelijk slechts 31 seconden op winnaar Simoni. Simoni schoof op naar de derde plaats, maar zei na afloop dat hij de zege op de Zoncolan belangrijker vond dan zijn podiumplek en dat hij zijn Giro al geslaagd vond.
Met nog 4 etappes te gaan, stond het peloton de makkelijkste etappe van de hele ronde te wachten. In de 203 kilometer lange etappe tussen Udine en Riese Pio X (Riese Pio Dieci) zat geen enkel obstakel en zoals al verwacht eindigde de etappe in een massasprint. Die werd ontregeld doordat twee renners van de Ag2r-ploeg op zo'n 800 meter van de streep onderuit gingen. Matteo Tosatto ging van heel ver aan, maar werd meteen bijgehaald door Alessandro Petacchi die vervolgens een heel lange sprint reed. Hoewel Richeze nog dichtbij kwam, won Petacchi de etappe.
Negentiende etappe
Negentiende etappe - 1 juni Van Treviso naar Comano di Terme over 179 km
De negentiende etappe was een heuvelachtige en leek bestemd voor de vluchters, tenzij de klassementsrenners nog iets uit wilden halen. Dat gebeurde niet en dus werd het inderdaad een ontsnapping die het haalde. Iban Mayo kwam na een mooie solo als eerste over de streep. Jevgeni Petrov steeg, ondanks een val in de afdaling van de slotklim, een plaatsje in het klassement, waardoor hij nu op de 7e plaats kwam te staan.
Paolo Savoldelli maakte zijn Ronde van Italië, die tot dan toe nog geen succes was geweest, weer wat goed door de tijdrit te winnen. In het klassement was het vooral Eddy Mazzoleni die het goed deed. Aan de start van de tijdrit stond Mazzoleni nog vijfde, maar hij deed het zo goed dat hij na afloop derde stond. Ook Danilo Di Luca kwam juichend over de streep, want hij was zo goed als zeker van de eindzege.