Ha vinto in singolare due titoli ATP e diversi altri nei circuiti minori, e il suo miglior ranking ATP è il 49º posto dell'aprile 2023. In doppio ha vinto un titolo ATP e nel marzo 2020 ha raggiunto il 127º posto mondiale.
Debutta tra i professionisti nell'estate del 2010 con una sconfitta in singolare e perdendo la finale in doppio assieme a Pablo Carreño Busta al torneo ITF Spain F31; la settimana successiva vince il primo titolo in singolare all'ITF Spain F32 sconfiggendo in finale lo stesso Carreño Busta per 6-4, 6-2. Nel 2011 vince altri due tornei ITF in singolare e i primi due ITF in doppio, verso fine anno disputa i primi incontri nel circuito Challenger. Continua a raccogliere successi nel circuito ITF e inizia a giocare con maggiore continuità nei Challenger nell'estate del 2013.
2013-2015: prima semifinale ATP, primi titoli Challenger e top 120
Gioca il primo match in un main-draw di un torneo ATP a Barcellona nell'aprile 2013. In tale circostanza perde al primo turno contro il veterano Nikolaj Davydenko. Nell'aprile 2014 supera le qualificazioni all'ATP di Casablanca, raggiunge le semifinali e perde dal più esperto Guillermo García López con il punteggio di 6-2, 6-7, 6-4. Con questo risultato scala molte posizioni nella classifica mondiale e il 9 giugno porta il best ranking al 182º posto. Dopo aver vinto 9 tornei in singolare e 4 in doppio, a ottobre abbandona i tornei ITF. Nel 2015 vince un solo incontro ATP a Barcellona, gioca in prevalenza nei Challenger e vince due delle tre finali disputate; alza il primo trofeo di categoria a Kenitra grazie al ritiro in finale di Oriol Roca Batalla e a ottobre si impone nella finale di Mohammedia sconfiggendo in due set Kamil Majchrzak, risultati con cui sale al 120º posto mondiale. A Mohammedia vince anche il primo titolo di categoria in doppio, in coppia con Carreño Busta.
Nel febbraio 2016 raggiunge il secondo turno all'ATP di Quito battendo Austin Krajicek per poi venire eliminato da Bernard Tomić in tre set. Disputa il suo secondo quarto di finale in carriera a San Paolo, entra nel tabellone come lucky loser e supera Tarō Daniel e Thomaz Bellucci, per poi essere sconfitto da Pablo Carreño Busta; a fine torneo porta il best ranking alla 106ª posizione. Raggiunge poi il secondo turno a Quito battendo Austin Krajicek per poi venire eliminato da Bernard Tomić in tre set, e a Istanbul sconfitto da Jiří Veselý. Supera le qualificazioni a Madrid e soprattutto al Roland Garros – dove entra per la prima volta nel main draw di una prova dello Slam – e perde al primo turno rispettivamente da Richard Gasquet e Adam Pavlásek. In estate viene sconfitto in finale al Challenger di Båstad da Horacio Zeballos e vince altri due incontri di primo turno nei tabelloni ATP, entra per la prima volta nella top 100 e sale al 95º posto. Nel finale di stagione gioca nei Challenger, in singolare non va oltre i quarti di finale raggiunti in un torneo e perde diverse posizioni in classifica. Ad agosto vince il torneo di doppio al Challenger di Cortina.
2017, un quarto di finale ATP e due titoli Challenger
Nel febbraio 2017 raggiunge i quarti di finale a Quito e viene sconfitto da Albert Ramos Viñolas. Nel corso della stagione entrerà in un altro tabellone principale ATP solo al Rio Open, dove esce al secondo turno. Perde quindi altre posizioni in classifica, le recupera nella seconda parte della stagione raggiungendo tre finali Challenger e vincendo quelle di Cortina e Manerbio, risultati con i quali per una sola settimana rientra in top 100.
L'11 febbraio 2018 a Quito, diventa il primo qualificato spagnolo a vincere un titolo ATP dopo Almagro, che nel 2006 aveva vinto il torneo di Valencia. Raggiunge la finale eliminando Andrej Martin, Nicolás Jarry, Paolo Lorenzi e Federico Gaio. Nell'atto conclusivo batte Albert Ramos Viñolas in tre set. Grazie a questo risultato porta il best ranking alla 72ª posizione. Perde nei quarti di finale all'Estoril contro Stefanos Tsitsipas al tie-break del terzo set. Vince il suo primo incontro in uno Slam in doppio al Roland Garros e in singolare agli US Open con il successo su Mitchell Krueger in quattro set, per poi essere sconfitto dalla testa di serie nº 20 Borna Ćorić. Vince inoltre il suo quinto titolo Challenger a Barcellona.
Viene sconfitto nei quarti di finale a Buenos Aires da Cecchinato, a Barcellona da Nishikori, a Bastad e a Gstaad viene eliminato in entrambi i casi da A Ramos Viñolas. Nel corso della stagione vince i titoli Challenger a Murcia e a Lisbona. Esce dalla top 100 in febbraio, vi fa rientro ad aprile e a giugno torna a occupare la 72ª posizione. Consegue buoni risultati nel circuito maggiore anche in doppio e a maggio entra per la prima volta nella top 200 di specialità.
2020, primo titolo ATP in doppio, terzo turno al Roland Garros in singolare
Anche nel 2020 non compie sostanziali progressi in singolare, mentre in doppio il 1º marzo vince a Santiago del Cile il suo primo titolo ATP in carriera, gioca con Alejandro Davidovich Fokina e sconfiggono in finale Marcelo Arévalo / Jonny O'Mara in due set, a fine torneo porta il best ranking di specialità al 127º posto. Dopo la lunga pausa dovuta al COVID-19 torna a vincere un incontro agli US Open eliminando Feliciano Lopez ed esce al secondo turno per mano di Jeffrey John Wolf. Al Roland Garros si spinge per la prima volta al terzo turno in una prova dello Slam con i successi su Steve Johnson e sul nº 11 del mondo Denis Shapovalov, e si ritira durante il match che lo vede opposto a Grigor Dimitrov.
Vince il primo incontro in carriera agli Australian Open ed esce di scena al secondo turno. A marzo si spinge fino ai quarti all'ATP di Santiago del Cile e viene sconfitto da Daniel Elahi Galán. Il mese successivo vince il Challenger di Belgrado. All'ATP del Serbia Open sconfigge il nº 15 del mondo Gaël Monfils e dà forfait prima di disputare l'incontro dei quarti di finale. Il miglior risultato nei tornei ATP del 2021 è la semifinale raggiunta a Båstad, persa copntro il futuro vincitore Casper Ruud dopo il successo al secondo turno su Fabio Fognini. Nel torneo svedese raggiunge la semifinale anche in doppio. Fa quindi il suo esordio olimpico ai Giochi di Tokyo ed esce di scena al primo turno. Tra i risultati importanti di fine anno vi sono i secondi turni raggiunti agli US Open e a Indian Wells e due finali disputate nei Challenger, a novembre porta il best ranking al 71º posto.
Disputa i primi tornei stagionali nel circuito maggiore e non va oltre il secondo turno in singolare, mentre in doppio raggiunge la semifinale a Córdoba. Dopo aver perso una finale Challenger, ad aprile perde nei quarti all'ATP di Marrakech contro David Goffin e il mese dopo vince il Challenger di Tunisi. Non va oltre il secondo turno all'Open di Francia e anche agli US Open, dopo che era uscito nei quarti a Umago. Con la vittoria a settembre nel Challenger di Siviglia risale alla 72ª posizione. A ottobre esce nei quarti all'ATP di Firenze.
Non supera mai il secondo turno in singolare nei primi tre mesi del 2023, si riscatta ad aprile vincendo a Marrakech il secondo titolo ATP in carriera con il successo in finale al terzo set su Alexandre Müller, risultato con cui entra per la prima volta nella top 50 del ranking, al 49º posto. I risultati successivi più importanti sono il terzo turno raggiunto per la prima volta in un Masters 1000 agli Internazionali d'Italia e il primo incontro vinto in carriera a Wimbledon superando Matteo Arnaldi, per poi essere eliminato da Holger Rune. Esce nei quarti di finale a Umago per mano di Stan Wawrinka. Il 28 agosto ottiene la vittoria più prestigiosa da inizio carriera al primo turno degli US Open superando in 4 set il nº 4 del mondo Rune, nel suo primo successo su un top 10, ed esce di scena al turno successivo. Si conferma campione al successivo Challenger 125 della Copa Sevilla sconfiggendo in finale Calvin Hemery. Vince solo uno degli otto successivi match di fine anno.
A inizio stagione sconfigge Roberto Bautista Agut e Sebastian Ofner all'Auckland Open ed esce di scena nei quarti per mano di Ben Shelton. Non supera il secondo turno nei successivi tornei fino ad aprile, quando torna a disputare la finale a Marrakech e perde in due set contro Matteo Berrettini. Al successivo Barcelona Open esce al terzo turno per mano di Tsitsipas dopo aver eliminato il nº 24 ATP Lorenzo Musetti. Non va oltre il secondo turno nei Masters di Madrid e Roma e al Roland Garros. Eliminato al primo turno a Wimbledon, a luglio sconfigge Botic van de Zandschulp in finale al Challenger 125 del Braunschweig Open. Torna a mettersi in luce nel circuito ATP spingendosi fino ai quarti allo Swedish Open.