Garzelli begann seine professionelle Karriere 1997 beim RadsportteamMercatone Uno als Helfer für Marco Pantani. Beim Giro d’Italia 1997 übernahm er nach dem Ausscheiden von Pantani die Rolle des Klassementfahrers und wurde Gesamtneunter. Sein erster großer Erfolg war der Sieg bei der Tour de Suisse 1998 mit einem Vorsprung von 53 Sekunden auf den Schweizer Beat Zberg.
Beim Giro d’Italia 2002 gewann Garzelli die zweite und fünfte Etappe und trug vier Tage lang das Rosa Trikot. Zur 10. Etappe durfte er nicht mehr antreten, da er positiv auf das Maskierungsmittel Probenecid getestet und wegen Dopings sechs Monate lang gesperrt wurde. Zudem musste er 100.000 Schweizer Franken Strafe zahlen, von denen die Hälfte für fünf Jahre zur Bewährung gestellt wurden.[1]
Beim Giro d’Italia 2003 gewann er die dritte Etappe. Nach seinem zweiten Erfolg auf dem Monte Terminillo, dem Ziel der siebten Etappe übernahm er auch für drei Tage die Gesamtführung, ehe es ihm vom späteren Gesamtsieger Gilberto Simoni abgenommen wurde. Garzelli wurde Gesamtzweiter mit über sieben Minuten Rückstand. In der Tour de France 2003 gewann er die Sonderwertung Souvenir Henri Desgrange.
In den Folgejahren konnte Garzelli beim Giro d’Italia seine Podiumsplatzierungen nicht mehr wiederholen, fuhr jedoch weiterhin erfolgreich: 2004 gewann er die vorletzten Etappe und belegte mit fünfeinhalb Minuten Rückstand Platz sechs. Beim 2007 siegte der Vareser bei zwei Etappen, spielte aber im Gesamtklassement keine Rolle. In den Jahren 2009 und 2011 gewann er die Bergwertung, das Maglia Verde. Beim Giro 2009 gelang im darüber hinaus seine letzte Spitzenplatzierung als Siebter. Ein weiterer Etappensieg gelang ihm beim Giro d’Italia 2010.
Zu seinen weiteren bedeutenden Erfolgen zählt der Gewinn des EtappenrennensTirreno–Adriatico 2010. Dabei profitierte er von den besseren Etappenplatzierungen gegenüber seinem zeitgleichen Landsmann Michele Scarponi, den er erst auf der Schlussetappe aufgrund bei Zwischensprints errungener Bonfikationssekunden als Leader ablösen konnte.[2]
Nach dem Giro d’Italia 2013, bei dem er Platz 108 belegte, beendete er seine Karriere als Radprofi und wechselte zum Jahresende in die Sportliche Leitung seines letzten Teams Vini Fantini-Selle Italia.[3]