Iván García naît le en Espagne[1] et grandit durant son enfance dans la ville de Gijón. Il monte pour la première fois sur un vélo à l'âge de deux ans[2].
Le 12 novembre 2014, l'équipe Etixx annonce la composition de l'équipe pour la saison 2015, dont fait partie Iván García, et qu'elle se dénommera alors AWT-Greenway[3].
Il fait ses débuts professionnels au sein de ses nouvelles couleurs en février au Tour de Murcie, qu'il abandonne. Il se classe par la suite 50e de la Ster van Zwolle et 53e de la Course des chats début avril. Il participe ensuite au Tour de Normandie où il réalise trois tops 10. Il termine la course 31e au classement général. Le mois suivant, il prend part au Grand Prix Miguel Indurain (59e) et au Tour de La Rioja (28e). Il est sélectionné au sein de l'équipe nationale d'Espagne pour participer au Tour des Flandres espoirs qui se solde par un abandon, à la Côte picarde qu'il finit 80e et au ZLM Tour (62e).
Mi-septembre 2016, la nouvelle équipe World Tour Bahrain-Merida annonce sa signature pour deux ans, ses performances lors du Czech Cycling Tour (deux fois 3e d'étape) et du Tour de l'Avenir (8e puis 7e d'étape lors des deux premières journées) ainsi que ses qualités de rouleur ayant séduit le manager Brent Copeland[5]. Il y commence sa saison sur les routes du Dubaï Tour, accompagnant Sonny Colbrelli, 3e de la troisième étape. Il enchaîne par le Tour d'Andalousie avec deux tops 15 à la clé lors des deux dernières étapes. Malgré son jeune âge, il dispute de nombreuses classiques World Tour pour sa première année à ce niveau dont le Circuit Het Nieuwsblad, les Strade Bianche, A travers la Flandre, le GP E3, Gand-Wevelgem, le Tour des Flandres, Paris-Roubaix ou encore l'Amstel Gold Race. Au sortir de ce bloc de courses d'un jour, il prend part au Tour du Japon avec six tops 10 à la clé dont trois troisièmes places sans parvenir à décrocher un succès.
Un beau programme l'attend sur la deuxième partie de saison, prenant part au Tour de Suisse, à la Classica San Sebastian, aux championnats d'Europe (8e), au BinckBank Tour puis à son premier Grand Tour, la Vuelta. Il s'y distingue lors des dernières étapes, 3e lors de la dix-neuvième puis 5e lors de l'arrivée à Madrid. Il clot sa saison aux championnats du monde espoirs.
Saison 2018
Avant de retrouver le Dubaï Tour, sa saison débute en Argentine sur le Tour de San Juan. En plus d'un nouveau bloc de classiques conséquent, il découvre Paris-Nice en mars, notamment 10e de la deuxième étape. Lors du Tour des Flandres, il est membre de l'échappée principale, se détachant de celle-ci en compagnie de Tom Devriendt à la suite de l'ascension du Kanarieberg avant d'être repris à 50 kilomètres de l'arrivée. Il se distingue quelques mois plus tard, en juillet 2018, quatrième de la RideLondon-Surrey Classic[6]. Il dispute une seconde année consécutive le Tour d'Espagne, y réalisant quatre tops 10. Défini par son équipe comme un coureur polyvalent, bénéficiant d'une grande marge de progression et doté d'un état d'esprit exemplaire, son contrat est prolongé de deux ans[7].
Saison 2019
Pour sa troisième saison, il connait rapidement des résultats, 3e d'étape sur le Tour d'Andalousie, 13e de Kuurne-Bruxelles-Kuurne avant d'être seulement devancé par Dylan Groenewegen sur la deuxième étape de Paris-Nice marquée par de nombreuses bordures. Il connait ses premiers beaux résultats sur les classiques, 23e du GP E3, échappé sur Gand-Wevelgem où son coéquipier Matej Mohorič prend la 9e place, 16e d'A Travers les Flandres et 24e du Tour des Flandres. Il connait une fin de campagne des classiques un peu plus difficile sur Paris-Roubaix (41e) et l'Amstel Gold Race (abandon). Coupant trois semaines, il renoue avec la compétition sur le Tour de Californie où il obtient son premier succès chez les professionnels lors de la cinquième étape. Il enchaîne par le Tour de Suisse où il décroche trois tops 15 (4e, 8e et 12e d'étape). Retenu pour prendre part au Tour de France, il y termine 8e de la neuvième étape. Sur la fin de saison, il se classe septième du classement général du BinckBank Tour, 3e du GP de Montréal ou encore 7e du GP Bruno Beghelli. Entre-temps, il est également sélectionné pour représenter l'Espagne lors des championnats du monde.
Saison 2020
Comme en 2019, il lance sa saison sur le Tour de la Communauté valencienne où il décroche deux tops 10. Il ne raccroche un dossard qu'un mois plus tard, sur Paris-Nice, où il se distingue d'abord en tant qu'équipier au service de Dylan Teuns, 2e de la première étape marquée par le mauvais temps et des bordures, puis à titre personnel en remportant la troisième étape et en étant seulement devancé par Niccolò Bonifazio sur la cinquième. Du fait de la pandémie de Covid-19, il ne retrouve la compétition qu'en août, en Italie, prenant le départ des Strade Bianche (abandon) et de Milan-San Remo (93e).
Le 10 août, l'équipe espagnole Movistar annonce son arrivée pour les trois futures saisons[8]. En une semaine, il enchaîne alors les résultats, 4e du championnat d'Espagne, 10e de la Bretagne Classic, 8e du championnat d'Europe et auteur de deux deuxièmes places sur le Tour Poitou-Charentes en Nouvelle-Aquitaine. À la suite d'une chute à la fin du GP de l'Escaut, il souffre d'une fracture du scaphoïde et d'une luxation de l'épaule et doit mettre un terme à sa saison.