Carriera Giocatore Cresciuto nella Primavera del , non ha mai debuttato in prima squadra. Viene quindi ceduto in Serie C2, prima al Pergocrema (dove colleziona 62 presenze ed una rete tra il 1987 e il 1989) e poi alla Solbiatese. Rimane a Solbiate fino all'estate del 1993, quando passa al , in Serie B: in Puglia viene promosso immediatamente titolare, conquistando la promozione in Serie A e disputando le due stagioni successive nella massima serie.
Nel novembre 1996, dopo la retrocessione del in Serie B, torna in Serie A trasferendosi al in cambio di Davide Olivares. Vi rimane per tre stagioni, nelle quali Renzo Ulivieri lo converte da marcatore a uomo a difensore a zona; si guadagna il soprannome di Thuram bianco, segnalandosi come difensore affidabile e abile nel gioco aereo. Nella semifinale di ritorno di Coppa UEFA 1998-1999 fra Bologna e Olympique Marsiglia è coinvolto in una rissa rimediando cinque turni di squalifica.
Nel 1999 passa alla per la cifra di 13 miliardi di lire; con la squadra capitolina vince uno scudetto nella stagione 2000-2001. Tuttavia il suo rendimento cala rispetto alle stagioni a Bologna, e nel 2001 viene ceduto al , nell'ambito di uno scambio che coinvolge altri cinque giocatori. Vi rimane per sei mesi, collezionando un'unica presenza; a gennaio 2002 passa in prestito al Brescia, voluto da Carlo Mazzone, già suo allenatore al .
Nella stagione successiva si trasferisce al , come contropartita per il riscatto di Matuzalém da parte dei ducali. Con i biancorossi disputa un campionato in Serie A (l'ultimo per lui), e uno in Serie B, nel quale indossa anche la fascia di capitano. Nel gennaio 2005 rescinde il contratto con il Piacenza e si trasferisce al , voluto da Gigi Cagni (suo allenatore a Piacenza). Tuttavia rescinde il contratto nell'aprile dello stesso anno e conclude la sua carriera.
Ha totalizzato complessivamente 221 presenze in Serie A e 82 presenze in Serie B.
Allenatore Nell'ottobre del 2007 diventa allenatore del in Lega Pro Seconda Divisione. Nel giugno 2010 lascia il Pavia e si accasa alla , in Lega Pro Prima Divisione. Il 22 dicembre 2011 viene esonerato dalla compagine emiliana. Fatali le quattro sconfitte consecutive con , Viareggio, e .
Il 1º dicembre 2014 viene chiamato sulla panchina dell'AlbinoLeffe al posto dell'esonerato Roberto Bonazzi. La squadra bergamasca termina all'ultimo posto in classifica nel campionato di Lega Pro 2014-2015, retrocedendo in Serie D. Nel dicembre 2015 subentra a Gilson Granzotto sulla panchina del Gama, squadra brasiliana partecipante al Campionato Brasiliense. Nel marzo successivo, dopo aver guidato la squadra brasiliana in 7 partite, viene esonerato dalla dirigenza. Nel 2019 assume la direzione del club dilettantesco Brera. Viene confermato anche per la stagione successiva.
Il 22 febbraio 2022 assume la guida del Villa Valle, che occupa l'ultimo posto nella classifica del Girone B della Serie D. Termina la stagione regolare al quintultimo posto, accedendo così al playout. Nello spareggio salvezza contro il Caravaggio riesce nell'impresa di salvare la sua squadra (vittoria per 1-0). Il 6 ottobre 2023, in seguito ad un avvio di stagione stentato, viene sollevato dall'incarico.
Il 24 febbraio 2025 subentra a Corrado Cotta sulla panchina della Castellanzese, squadra invischiata nelle zone basse della classifica del Girone B di Serie D. Dal suo arrivo la squadra cambia marcia riuscendo a centrare la salvezza, però ciò non basta a mantenere la panchina. Infatti il 17 maggio seguente, la società annuncia tramite un comunicato di aver raggiunto l'accordo per la risoluzione del contratto con il tecnico.
Il 7 novembre 2025 viene ufficializzato come nuovo allenatore del Trevigliese, squadra impelagata nei bassifondi della classifica del girone D di serie D. Il 2 febbraio successivo, all'indomani della sconfitta sul campo del Tropical Coriano e con la squadra terzultima in graduatoria, viene sollevato dall'incarico.
Statistiche Presenze e reti nel club StagioneSquadraCampionatoCoppe nazionaliCoppe continentaliAltre coppeTotaleCompPresRetiCompPresRetiCompPresRetiCompPresRetiPresReti 1989-1990 C2 30 0 - - - - - - - - - 30 0 1990-1991 C2 32+1Spareggio Promozione 1 - - - - - - - - - 33 1 1991-1992 C2 30 0 - - - - - - - - - 30 0 1992-1993 C2 26 1 - - - - - - - - - 26 1Totale Solbiatese 118+1 2 - - - - - - 119 21993-1994 B 30 0 CI 1 0 - - - - - - 31 0 1994-1995 A 28 0 CI 2 0 - - - - - - 30 0 1995-1996 A 30 0 CI 1 0 - - - - - - 31 0nov. 1996 B 2 0 CI 1 0 - - - - - - 3 0Totale Bari 90 0 5 0 - - - - 95 0 nov. 1996-1997 A 21 0 CI 3 0 - - - - - - 24 0 1997-1998 A 32 0 CI 3 0 - - - - - - 35 0 1998-1999 A 28+2Spareggi per la qualificazione alla Coppa UEFA 1999-2000. 0 CI 8 0 Int+CU 5+8 0 - - - 49 0Totale Bologna 81+2 0 14 0 13 0 - - 110 0 1999-2000 Roma A 25 0 CI 3 0 CU 3 0 - - - 31 0 2000-2001 A 11 0 CI 2 0 CU 5 0 - - - 18 0Totale Roma 36 0 5 0 8 0 - - 49 0 2001-gen. 2002 A 1 0 CI 2 0 CU 1 0 - - - 4 0 gen.-giu. 2002 A 17 0 CI 0 0 - - - - - - 17 0 2002-2003 A 28 0 CI 0 0 - - - - - - 28 0 2003-2004 B 36 0 CI 1 0 - - - - - - 37 0 2004-gen. 2005 B 10 0 CI 3 0 - - - - - - 13 0Totale Piacenza 74 0 4 0 78 0 gen.-giu. 2005 B 4 0 CI 0 0 - - - - - - 4 0Totale carriera 421+3 2 30 0 22 0 - - 476 2
Palmarès Giocatore Competizioni nazionali
Roma: 2000-2001
Competizioni internazionali
Bologna: 1998
Note
Collegamenti esterni