Se inició en el deporte en la escuela de fútbol fundada por su padre, José García Moñino, antiguo portero del Murcia, y el que fuera jugador de primera división, Cholo. En 2000 se incorporó a las categorías inferiores del Real Madrid. En la temporada 2004-05 pasó al equipo C, para solo un año más tarde formar parte del Real Madrid Castilla.[2]
Debutó oficialmente con el primer equipo del Madrid el 26 de octubre de 2004, frente al CD Leganés en los treintaidosavos de final de la Copa del Rey. Su primer partido en la primera división sería algunos días después el 28 de noviembre contra el UD Levante, al sustituir a Celades en el minuto 77. Esa temporada la disputó en el Castilla con algún partido con el Real Madrid. En la siguiente temporada, 2005/06, jugó 32 partidos con el Real Madrid Castilla en segunda división, pero no disputó ninguno con el primer equipo.
En el verano de 2006 participó en el Campeonato Europeo Sub-19 de Polonia, donde la selección española se proclamó campeona de Europa y en el que Javi García cuajó una gran actuación, que llamó la atención de Fabio Capello que contó con él para la pretemporada del primer equipo, haciéndole jugar bastantes minutos en partidos amistosos, fue titular en el Trofeo Ramón de Carranza, con el brasileño Emerson de pareja en el centro del campo. La llegada de Mahamadou Diarra al equipo dificultó bastante sus posibilidades de permanecer en el plantilla del primer equipo, por lo que fue destinado a seguir en el Castilla, en el que esa temporada disputó 27 partidos en la segunda división.
En agosto de 2007, el Real Madrid lo traspasó al CA Osasuna por 2,5 millones de euros, con una opción de recompra a favor del equipo madrileño. En su primera temporada se consolidó en primera división con 25 partidos disputados y dos goles marcados. En 2008, un año después, el Real Madrid hizo efectiva su cláusula de recompra, por lo que ese verano regresó al Bernabeu para disputar la temporada 2008-09 con el equipo blanco, en la que el obtendrían el título de la supercopa de España.[3][4]
El 21 de julio de 2009 fue traspasado al S. L. Benfica portugués por 7 millones de euros. Al terminar el año, tras una buena temporada, varios equipos ingleses como el Chelsea, Liverpool y Manchester City, se interesaron por él, pero finalmente permaneció en Lisboa. Durante los tres años que permaneció en el equipo portugués, Javi García conquistó el título de liga en la temporada 2009-2010.[5]
En septiembre de 2012 fue traspasado por 20 millones de euros al Manchester City. En el equipo británico permaneció dos temporadas y obtuvo una Premier League y una Copa de la Liga a las órdenes del entrenador Manuel Pellegrini.
El 14 de agosto de 2014, tras varios días de rumores, se hizo oficial su traspaso por 16 millones de euros al FC Zenit de San Petersburgo, entonces entrenado por el portugués Villas Boas.[6] En el equipo ruso permaneció tres temporadas en las que obtuvo 1 título de la Liga Premier de Rusia y un título de Copa.
En agosto de 2017 se desvinculó del FC Zenit de San Petersburgo para volver a la liga española al fichar por cuatro temporadas por el Real Betis Balompié, que abonó un millón y medio de euros al equipo ruso, en concepto de traspaso.[7]
Debutó con el Real Betis en la primera jornada de Liga el 20 de agosto de 2017 en el Camp Nou ante el Fútbol Club Barcelona, con derrota para su equipo por 2-0.[8] Marcó su único gol de la temporada ante el Alavés en Mendizorroza, haciendo el segundo de la victoria de su equipo por 1-3 en la jornada 28.[9] El Real Betis logró esa temporada la clasificación para la Liga Europa de la UEFA clasificándose sexto en Liga.[10]
En agosto de 2020 se desvinculó del Real Betis Balompié y regresó al fútbol portugués tras firmar con el Boavista F. C. para las siguientes tres temporadas.[11]
Con la selección absoluta fue convocado el 15 de mayo de 2012 para la disputa de amistosos preparatorios para la Eurocopa 2012, debutando el 26 de mayo ante la selección de Serbia, sustituyendo a Bruno Soriano en el minuto 72.