Dopo aver giocato qualche match di Coppa Davis nel 2016 e 2017, nel 2018 tenta le qualificazioni agli Australian Open, ma viene estromesso al secondo turno da Matteo Berrettini. Dopo aver disputato diversi tornei Challenger, entra ufficialmente nel circuito principale a fine aprile quando supera le qualificazioni a Budapest, perdendo poi al primo turno in tre set da Lorenzo Sonego. Fallisce poi le qualificazioni a Istanbul.
Alle qualificazioni del Roland Garros supera Hugo Grenier, Yannick Hanfmann e Marco Trungelliti, accedendo per la prima volta in carriera al tabellone principale di un Major. Al primo turno supera Tennys Sandgren col punteggio di 6-2, 6-2, 3-6, 6-3, vincendo così il suo primo incontro in uno Slam. Al secondo turno cede alla testa di serie numero tre Marin Čilić per 2-6, 2-6, 7-63, 5-7. Vince quindi il Challenger di Poznań.
Inizia la stagione sul cemento di Atlanta e viene battuto al primo turno da Alex De Minaur in tre set. La settimana successiva a Whashington entra per diritto di classifica nel tabellone principale per la prima volta e al primo turno supera Il'ja Ivaška col punteggio di 6-4, 6-3, per poi essere sconfitto da Frances Tiafoe per 2-6, 4-6. Viene poi eliminato al primo turno di qualificazione a Toronto da Pierre-Hugues Herbert. A Cincinnati supera le qualificazioni ma viene sconfitto al primo turno da Márton Fucsovics in tre set. Riesce a superare John-Patrick Smith, Jahor Herasimaŭ e Pedro Martínez nelle qualificazioni dello US Open e al primo turno approfitta del ritiro di Stefano Travaglia sul punteggio di 6-2, 2-6, 7-66 in favore del polacco. Al secondo turno viene sconfitto ancora una volta da Čilić col punteggio di 2-6, 0-6, 0-6. Questo risultato gli permette di entrare per la prima volta in carriera in Top 100, alla posizione numero 95.
Inizia la stagione con una sconfitta al primo turno del torneo di Pune per mano di Ilya Ivashka col punteggio di 7-69, 2-6, 3-6. Si vendica una settimana più tardi, vincendo il Canberra Challenger superando in finale proprio Ivashka per 6-4, 4-6, 6-2. Entra di diritto in tabellone agli Australian Open, ma viene sconfitto in quattro tie-break da Ivo Karlović. Non va meglio a Montpellier, dove viene sconfitto da Ernests Gulbis in due set. A Marsiglia supera al primo turno Filip Krajinović per 6-3, 6-2, ma al secondo turno viene sconfitto dal numero undici del mondo Stefanos Tsitsipas col punteggio di 6-4, 6-2.
La settimana seguente a Dubai, elimina al primo turno Corentin Moutet per 6-3, 7-5. Al secondo ha la meglio sul numero sei del mondo Kei Nishikori col punteggio di 7-5, 5-7, 6-2, si tratta della prima vittoria contro un top-10 per il polacco. Al turno successivo viene nuovamente sconfitto da Tsitsipas, questa volta in tre set. La settimana successiva ad Indian Wells raggiunge per la prima volta in carriera i quarti di finale in un master mille, battendo Donald Young, Lucas Pouille, Kei Nishikori e Denis Shapovalov, prima di arrendersi a Roger Federer con un doppio 6-4. A Miami, raggiunge il terzo turno battendo al secondo il neo-campione di Indian Wells Dominic Thiem, per poi cedere a Felix Auger-Aliassime. Grazie a questi risultati si porta a ridosso della top 50, alla posizione numero 54.
Inizia la stagione su terra battuta a Monte Carlo dove viene sconfitto all'esordio da Borna Ćorić col punteggio di 4-6, 7-5, 5-7. La settimana successiva a Budapest, cede ad Attila Balázs per 6-3, 6-4. A Madrid, dopo aver superato le qualificazioni, si spinge fino al terzo turno battendo senza perdere set Alex De Minaur e Lucas Pouille per poi essere eliminato in rimonta dal numero quattro del mondo Alexander Zverev. Questo risultato gli permettere di salire alla quarantunesima posizione della classifica mondiale, suo momentaneo best-ranking. Dopo essere stato sconfitto da Miomir Kecmanović al primo turno di qualificazioni a Roma, partecipa al torneo di Lione dove è testa di serie per la prima volta in carriera e viene sconfitto da Pablo Cuevas. Ha un sorteggio non fortunato al Roland Garros, dove affronta il numero uno del mondo Novak Djokovic che lo supera col punteggio di 6-4, 6-2, 6-2. Vista la prematura uscita dal secondo Slam stagionale prende parte al Poznań Open, dove difendeva il titolo, e raggiunge le semifinali.
Da inizio alla stagione su erba ad Halle, sconfitto in due set da João Sousa. La settimana seguente a Eastbourne batte Marco Cecchinato con un doppio 6-4 e Steve Johnson 6-3, 7-68, per poi arrendersi nei quarti al futuro campione, Taylor Fritz, col punteggio di 6-4, 7-65. A Wimbledon, supera al primo turno la testa di serie numero trentadue Dušan Lajović 6-3, 4-6, 6-4, 6-4, al secondo ha la meglio su Leonardo Mayer per 64-7, 6-1, 7-67, 6-3. Al terzo turno affronta nuovamente Djokovic e viene ancora una volta sconfitto col punteggio di 5-7, 7-65, 1-6, 4-6.
Torna in campo a Washington e supera al primo turno Donald Young 6-1, 6-4, per poi arrendersi con un doppio 6-4 a John Isner. A Montreal batte al primo turno Taylor Fritz, al secondo coglie la quarta vittoria contro top 10 in stagione a discapito di Tsitsipas per poi arrendersi a Gaël Monfils. Questo risultato gli permette di migliorare il suo best ranking alla posizione numero 40. A Cincinnati, perde al primo turno in due set contro Roberto Bautista Agut. La settimana seguente prende parte al torneo di Winston-Salem, dove viene accreditato dalla testa di serie numero tre. Dopo un bye al primo turno, supera al secondo Lee Duck-hee 4-6, 6-0, 6-3, al terzo turno approfitta del ritiro dell'ex numero dodici del mondo Feliciano López, sul punteggio di 6-3, 3-1 in favore del polacco. Nei quarti di finale elimina Frances Tiafoe in rimonta e in semifinale batte Denis Shapovalov in due set. Raggiunge così la prima finale in carriera, dove supera Benoît Paire col punteggio di 6-3, 3-6, 6-3, conquistando così il primo titolo. Questo risultato gli permette di salire alla posizione numero 35 della classifica. Agli US Open cede al primo turno in cinque set a Jérémy Chardy.
2020: Top 30 e primo titolo in doppio
Inizia il 2020 disputando la ATP Cup con la sua nazione insieme a Kamil Majchrzak, Łukasz Kubot e Kacper Zuk ma la sua avventura si ferma alla fase a gironi pur vincendo tutte le 3 partite di singolare in cui è impegnato. Inizia la stagione vera e propria sul cemento di Auckland nel quale, dopo aver sconfitto in 2 set sia Lorenzo Sonego che Mikael Ymer nei primi due turni, ottiene l'accesso alla semifinale battendo in 3 set Feliciano López. Viene poi eliminato in semifinale dal francese Benoît Paire in 3 set (4-6, 7-6(1), 2-6). Agli Australian Open non riesce ad andare oltre il secondo turno, fermato da John Millman in tre set. Non va meglio a Rotterdam, dove viene sconfitto all'esordio dal numero sei del mondo Stefanos Tsitsipas. A Marsiglia supera al primo turno Antoine Hoang per poi essere eliminato dal rientrante Vasek Pospisil. La settimana successiva perde al primo turno a Dubai contro Aleksandr Bublik col punteggio di 6-2, 7-5.
Dopo il lungo stop dovuto alla pandemia, torna in campo al torneo di Cincinnati, giocato eccezionalmente a New York, ma viene sconfitto al primo turno in due set. La settimana successiva agli US Open, supera in tre set Peter Gojowczyk, per poi cedere al turno seguente a Alejandro Davidovich Fokina in quattro set. Prende quindi parte al torneo di Kitzbühel, e viene sconfitto al secondo turno da Maximilian Marterer. Agli Internazionali BNL d'Italia, supera al primo turno Daniel Evans in tre set, al turno seguente ha la meglio sul numero 12 ATP Andrej Rublëv, accedendo così agli ottavi di finale, dove viene sconfitto dal futuro finalista Diego Schwartzman. Torna in campo due settimane più tardi al Roland Garros ma viene estromesso al primo turno da Tennys Sandgren col punteggio di 5-7, 6-2, 6-4, 6(1)-7, 9-11. Raggiunge poi i quarti di finale a Colonia, fermato da Roberto Bautista Agut in tre set. A Vienna supera al primo turno Attila Balázs ma viene poi sconfitto da Lorenzo Sonego. Una settimana più tardi prende parte al torneo di Bercy ma viene eliminato al primo turno da Radu Albot in tre set, va meglio in doppio dove in coppia con Félix Auger-Aliassime raggiunge la prima finale di specialità. L'8 novembre vince il suo primo titolo in doppio col punteggio di 63-7, 7-67, [10-2] superando Mate Pavić e Bruno Soares. Chiude così l'anno alla posizione numero 34 in singolare e 72 in doppio.
2021: vittoria a Miami, top 9, qualificazione ATP Finals
La sua stagione inizia a Delray Beach, dove da testa di serie numero quattro riceve un bye al primo turno. Raggiunge la sua seconda finale della carriera senza perdere nemmeno un set, al secondo turno supera Daniel Elahi Galán, nei quarti Roberto Quiroz mentre in semifinale ha la meglio su Christian Harrison. Il 13 gennaio conquista il suo secondo titolo della carriera superando in finale Sebastian Korda con un doppio 6-3. Il 4 aprile conquista il Miami Open, prima vittoria di un Masters 1000 in carriera, battendo in finale Jannik Sinner in due set.