Dopo il primo anno in massima serie fu chiamato al Brescia fra i cadetti, conquistando la promozione. La squadra retrocesse per poi conquistare un'altra promozione, terminando il successivo campionato di Serie A 1994-1995 all'ultimo posto. Nel 1995 si trasferì alla Reggiana[1] dove rimase un anno e mezzo ottenendo la promozione in Serie A nel 1996; a gennaio 1997 fu acquistato dal Vicenza, che lo girò in prestito al Bologna per la seconda parte della stagione 1996-1997.[5] Nella stagione successiva tornò a vestire la maglia vicentina, con cui disputò tre stagioni debuttando anche nella Coppa delle Coppe,[6] e conquistando la promozione in Serie A nel campionato 1999-2000.
Nel 2000 cambiò nuovamente maglia, accasandosi alla Ternana, dove rimase due stagioni: nella prima la squadra rossoverde terminò nelle prime posizioni della classifica di Serie B, mentre nella seconda annata in rossoverde fu meno impiegato rispetto all'anno precedente e la squadra retrocesse nell'ultima giornata. La retrocessione in Serie C1 fu però annullata grazie al ripescaggio in Serie B dovuto al fallimento della Fiorentina. Per la stagione 2002-2003 venne acquistato dall'Ancona:[7] fu la sua ultima stagione da giocatore professionista, in cui contribuì alla promozione in Serie A della squadra marchigiana, allenata da Luigi Simoni.
Inizia nel 2003, quando diventa giocatore-allenatore della Narnese.[9][10] Dal 2007 è l'allenatore del Deruta, in Eccellenza umbra: ottiene il primo posto in campionato e la conseguente promozione in Serie D, la prima della storia per la compagine umbra,[11] e nel campionato 2008-2009, sempre alla guida del Deruta, sfiora l'approdo ai play-off. Nel 2009 per un mese è alla guida del Rieti[12]. Tornato al Deruta, nel dicembre 2010 viene sollevato dall'incarico a causa della posizione in classifica,[13] per poi essere richiamato per la parte finale del torneo.[11]
Dall'estate 2011 è alla guida dello Sporting Terni, sempre in Serie D;[9][14] con la formazione umbra arriva ai play-off, nei quali viene eliminato dall'Atletico Arezzo.[15] L'8 ottobre 2013 è chiamato a sostituire Zoran Luzi alla guida del Voluntas Spoleto,[16] venendo a sua volta esonerato nel marzo successivo.[17]
Nel luglio 2015 viene ingaggiato dalla Civitanovese, partecipante al campionato di Eccellenza.[18] Nel febbraio 2016 viene esonerato nonostante il primo posto con 8 punti di vantaggio sulla seconda.[19] Il 18 giugno diventa il nuovo allenatore del Sansepolcro[20] ottenendo l'ottavo posto nella stagione 2016-2017. Riconfermo dalla società biturgense, viene sollevato dall'incarico il 7 novembre 2017 dopo aver totalizzato tredici punti in altrettante giornate.[21]
Viene richiamato sulla panchina del Sansepolcro, con la squadra ultima in classifica, il 19 febbraio 2018,[22] non riuscendo, però, a evitare la retrocessione della compagine toscana, che alla fine del campionato scende in Eccellenza. A maggio 2018 approda sulla panchina della Flaminia, in Serie D,[23] dove resta per una sola stagione conducendo alla salvezza il club laziale.