Cresciuto nelle giovanili dell'Atalanta, debutta in prima squadra appena diciottenne, giocando a Bergamo per due stagioni, nel corso delle quali colleziona 19 presenze. Viene poi dirottato, per acquistare esperienza, dapprima al Chievo e poi al Bari, dove però trova poco spazio. Le sue doti vengono però notate dai dirigenti dell'Udinese che lo acquistano nell'estate del 1997, e di cui diventa piano piano uno dei punti di forza, tanto da attirare le mira di importanti club, e tra tutti, soprattutto della Juventus che lo acquista nel 2000. La sua avventura a Torino durà però poche partite, tanto che nel gennaio del 2001 viene ceduto in prestito al L.R. Vicenza, con cui chiude la stagione con un'amara retrocessione ma avendo la soddisfazione di segnare le sue prime reti nella massima serie (doppietta contro la Reggina e gol con il Bari).
Rimane in Veneto anche nella stagione 2001-2002, nelle file del Verona, con cui però retrocede nuovamente nonostante un campionato giocato ad alti livelli. Viene quindi acquistato dal Bologna dove milita per due stagioni, costellate da gravi infortuni, e di un importante intervento chirurgico alla testa. Nel 2004 viene acquistato dal Messina, di cui diventa uno dei punti di forza della difesa, dove milita per quattro stagioni, sia in Serie A che in Serie B, fino all'estate del 2008 quando il club siciliano viene dichiarato fallito. Svincolato, viene acquistato dal Vicenza nel mercato estivo del 2008, giocando per 4 stagioni nella società berica diventandone anche il capitano. A fine del campionato di Serie B 2011-2012 si vede retrocedere in Lega Pro.
Il 16 luglio 2012 lascia il calcio giocato e diventa ufficialmente il collaboratore tecnico del Vicenza, diventando così l'assistente del neo tecnico Roberto Breda. Anche dopo l'esonero di Breda rimane a Vicenza, dove ricopre ancora il ruolo di collaboratore tecnico di Alessandro Dal Canto. Il 15 luglio 2013 diventa il vice-allenatore del Venezia sempre al fianco di Alessandro Dal Canto.[2] Il 15 luglio 2014 diventa il nuovo tecnico degli Allievi Nazionali del Vicenza.[3] L'anno successivo torna all'Atalanta per ricoprire il ruolo di tecnico degli Allievi Nazionali.[4] Dopo aver allenato per quattro stagioni nelle giovanili del club, nell'annata 2019/2020 entra nello staff della Primavera guidata da Massimo Brambilla.[5]