Nel 1997 viene acquistato dal Milan, che poi lo gira in prestito al Monza, sempre in Serie B[11][12]. Con i brianzoli gioca un campionato e mezzo tra i cadetti; nel gennaio 1999 passa al Lecce, che ne rileva la comproprietà in cambio di Renato Greco[13], e conquista la seconda promozione in Serie A. Rientrato al Milan, viene ceduto al Cesena nella trattativa che porta Mattia Graffiedi ai rossoneri[14]. Inizialmente riserva del rumeno Daniel Pancu, guadagna il posto da titolare a fianco di Carlo Taldo[15]: la coppia realizza 25 reti, non sufficienti a evitare la retrocessione in Serie C1. Inizialmente riconfermato anche per la stagione successiva, nella sessione autunnale del mercato torna in Serie B, ingaggiato in comproprietà dal Siena[16], con cui disputa una stagione e mezza tra i cadetti. Nel gennaio 2002, dopo essere finito ai margini della rosa dei toscani[17], passa al Crotone, in Serie C1, e nell'estate 2003 si trasferisce a parametro zero alla Reggiana[18]. La permanenza in Emilia, condizionata da diversi problemi fisici[19], dura una sola stagione conclusa con la salvezza ai playout; nella successiva sessione di mercato passa al Como, sempre in Serie C1.
Nel dicembre 2004 lascia i lariani, in difficoltà economiche, e si trasferisce alla Cremonese[12] (suscitando il disappunto della tifoseria piacentina[20]), con cui ottiene la promozione in Serie B. Inizialmente riconfermato, nel finale della sessione estiva di mercato si trasferisce al Pizzighettone, appena promosso in Serie C1[21]: disputa tre campionati (due di Serie C1 e uno di Serie C2), poi passa al Pavia nell'estate 2008, sempre in Serie C2. Vi rimane per una sola stagione, nella quale realizza 6 reti nonostante diversi infortuni[22]; nel settembre 2009, non rientrando nei piani tecnici della società, rescinde il contratto[22] e ritorna al Pizzighettone[23], scendendo in Serie D.
Nella stagione 2010-2011 passa al San Nicolò[24], squadra piacentina che milita nel campionato di Eccellenza. Rimane in forza ai bianconeri anche all'inizio della stagione successiva, quando la società si fonde con il Marsaglia rinominandosi San Nicolò Marsaglia[25], salvo poi trasferirsi al Fontana Audax di Castel San Giovanni[26], con cui non evita la retrocessione in Prima Categoria. Nel luglio 2012 passa alla Borgonovese[27], che lascia a dicembre per trasferirsi all'Agazzanese[28], entrambe nel Piacentino.
Nel 2014 interrompe l'attività agonistica per dedicarsi a quella di allenatore, come tecnico della squadra Giovanissimi del Pro Piacenza[30]. Dopo un intermezzo al San Lazzaro, società dilettantistica piacentina, come direttore tecnico[31], torna ai rossoneri anche nelle stagioni successive guidando gli Allievi e quindi, dal 2017, la Berretti[32].
In seguito ricopre incarichi di responsabilità nei settori giovanili di Udinese[20] (dal 2018 al 2020) e Monza dal 2020[33].