Joan Capdevila milita nelle giovanili dell'Espanyol fino al 1998, quando entra a far parte della rosa della prima squadra. Nel corso della stagione 1998-99, fa il suo debutto nella Primera División spagnola, mettendo per la prima volta piede in campo nella partita terminata 2-2 contro l'Atletico Bilbao: conclude l'esperienza in Catalunya con 29 presenze e 4 reti, prima di trasferirsi nella capitale, nelle file dell'Atlético.
Con i colchoneros disputa una stagione positiva, a livello individuale, non tanto a livello di squadra, vista la retrocessione in Segunda División: in campionato, gioca 31 partite e segna 2 gol, mentre in Coppa UEFA segna 1 gol in 5 presenze.
Causa retrocessione madridista, nell'estate del 2000 il Deportivo la Coruña si accaparra il diritto di usufruire delle prestazioni del terzino, laureatosi vice-campione a Sydney 2000 con l'Olimpica spagnola, il quale dapprima si trova in competizione con Enrique Romero, poi si afferma come unica scelta per la fascia sinistra di difesa. Disputa con i galiziani sette stagioni, con più alti che bassi, non giocando in Champions League solo nelle ultime due stagioni, nelle quali in compenso supera le 30 presenze in campionato, mai accaduto nelle precedenti cinque. L'esperienza a La Coruña termina nel 2007 con il passaggio al Villarreal[1].
La stagione 2007-2008 è una fra le più positive nella carriera di Capdevila, che gioca tutte le partite di campionato tranne due, realizzando 3 reti, mentre in Coppa UEFA gioca 6 presenze con un gol. La stagione termina con il secondo posto del Villarreal, che gli permette di partecipare alla UEFA Champions League 2008-2009 senza passare dai preliminari.
Il 21 luglio 2011 viene ingaggiato dal Benfica, firmando un contratto biennale.[2] Il 27 luglio 2012 viene ingaggiato dall'Espanyol, facendo così ritorno nel club con il quale ha debuttato nel calcio professionistico. Il 16 luglio 2014 viene ingaggiato dal North East United, club militante nella neonata Indian Super League.
Terminata la stagione con il NorthEast United, dopo una breve periodo ai belgi del Lierse, il 1º giugno 2016 firma un contratto con la formazione andorrana del FC Santa Coloma, rimanendo fino alla fine della stagione, terminata con la vittoria del campionato.
Il 5 luglio 2017 annuncia il suo ritiro dal calcio.
Dopo aver debuttato in nazionale maggiore il 16 ottobre 2002 a Logroño contro il Paraguay, viene convocato per Euro 2004 ma non scende mai in campo, in quanto riserva del più esperto Raúl Bravo. Realizza il suo primo gol con le "Furie rosse" il 17 novembre 2007 nell'incontro valido per le qualificazioni al campionato europeo 2008 vinto 3-0 sulla Svezia. Il secondo gol arriva nella partita immediatamente successiva, un'amichevole contro la Francia (1-0).