In 1997 maakte Juanito de overstap van de jeugdelftallen van Cádiz CF naar het tweede team van Real Betis. Na drie seizoenen (1997-2000) vertrok de verdediger voor één jaar op huurbasis naar Recreativo Huelva. In 2001 keerde Juanito terug bij Real Betis en werd een er vaste waarde in het eerste elftal. Met de Andalusische club speelde Juanito in het seizoen 2005/06 in de UEFA Champions League, nadat de club een jaar eerder vierde was geworden in de Primera División.
In 2009 verhuisde Juanito op 33-jarige leeftijd naar Atlético Madrid. Het werd een turbulent seizoen voor de verdediger: hij startte als basisspeler, verloor zijn plaats in de basis aan Luis Perea, knokte zich terug in het elftal en verloor vervolgens opnieuw zijn basisplaats. Op het einde van het seizoen won hij met Atlético wel de Europa League. Juanito kwam in de finale tegen Fulham FC niet van de bank en kwam in het toernooi enkel in actie in de kwartfinale tegen Valencia CF. Toen hij tijdens de heenronde van het seizoen 2010/11 enkel in de bekerwedstrijd tegen Universidad de Las Palmas CF in actie kwam, verkaste hij in de winter van 2011 naar Real Valladolid. Daar sloot hij in 2012 zijn spelerscarrière af.
Nationaal elftal
Juanito debuteerde op 21 augustus 2002 in het Spaans nationaal elftal tijdens het duel tegen Hongarije. Zijn eerste doelpunt maakte hij tegen Ivoorkust op 1 maart 2006. De verdediger behoorde tot de Spaanse selecties voor het EK 2004, het WK 2006 en het gewonnen EK 2008, waarop hij één wedstrijd speelde (tegen Griekenland). In de laatste groepswedstrijd op het WK 2006 tegen Saoedi-Arabië maakte Juanito het enige doelpunt van de wedstrijd.
Trainerscarrière
Juanito begon zijn trainerscarrière bij de jeugd van zijn ex-club Real Betis. Na passages bij bescheiden clubs als CD San Roque en Atlético Sanluqueño CF belandde hij op 11 januari 2019 bij de Belgische tweedeklasser KSV Roeselare.[1] Sinds 1 juli zit Juanito echter terug zonder club, in zijn half jaar bij Roeselare was hij 14 matchen trainer, hierin behaalde hij 20 punten. Dit staat gelijk aan een gemiddelde van 1.43 punten per match.