Cresciuto ad Ordona, entra a far parte del settore giovanile dei rossoneri dove esordisce in campionato e diventa pilastro della difesa foggiana in coppia con Oshadogan. Nel Foggia gioca per quattro stagioni prima di passare al Treviso dove resta per cinque anni, diventando il capitano della squadra.
Nel 2004 passa al Catania per 400 mila euro, disputando due stagioni; la stagione culmina con la promozione in Serie A del Catania. Nell’estate 2006 viene ceduto in prestito per 1.300.000 con un diritto di riscatto di 700 mila euro al Cagliari, che debutta in Serie A in casa, proprio contro il Catania. Titolare fisso, a Cagliari resta in tutto tre stagioni al termine delle quali, giunto in scadenza di contratto, firma un biennale con l’Atalanta.
A Bergamo disputa una stagione culminata con la retrocessione della squadra. Il 19 luglio 2010 la società bergamasca dichiara la rescissione consensuale del contratto con il giocatore. Lo stesso giorno il Sassuolo comunica il suo ingaggio.
Il 18 maggio 2013 vince il campionato di Serie B e conquista la promozione in Serie A con la squadra emiliana guidata da Eusebio Di Francesco.
Il 31 maggio 2015 gioca la sua ultima partita della carriera, in casa contro il Genoa. Al termine dell’incontro viene omaggiato da tutti i giocatori e il pubblico presente nello stadio. Dunque si ritira dal calcio giocato dopo 524 presenze e 13 gol in carriera.