Specialista del doppio, di cui è uno dei migliori interpreti italiani della storia, ha vinto 18 tornei del circuito maggiore (13 in doppio e 5 in doppio misto) raggiungendo la finale agli Australian Open nel 2024 e nel 2025 e all'Open di Francia nel 2024, sempre in coppia con Simone Bolelli. Nel doppio misto in coppia con Sara Errani ha trionfato agli US Open 2024, diventando il secondo tennista italiano a vincere un torneo del Grande Slam in questa specialità, primo dell’era Open, all'Open di Francia 2025 e di nuovo agli US Open 2025 e all’Open di Francia 2026. Nel 2026 in coppia con Bolelli ha vinto gli Internazionali d'Italia, diventando la prima coppia tutta italiana a trionfare nel torneo.
Nell'ottobre del 2024 ha raggiunto il 6º posto della classifica mondiale, miglior posizione di un doppista italiano e terzo di sempre dopo Fabio Fognini e Simone Bolelli ad essere entrato nella top 10 dall'introduzione del calcolo computerizzato. La sua posizione di n° 10 del mondo a fine 2024 è, a pari merito con quella di Fognini nel 2015, la più alta mai raggiunta da un italiano al termine di una stagione.
In coppia con Bolelli ha raggiunto per due volte di fila la qualificazione alle ATP Finals di fine anno nelle stagioni 2024 e 2025, concludendo rispettivamente come quinta e come settima migliore coppia al mondo.
Con la squadra italiana ha vinto per due volte consecutive la Coppa Davis nel 2024 e nel 2025. In singolare ha disputato due quarti di finale nel circuito ATP ed è stato 128º del ranking nel giugno 2023.
Carriera 2011-2015: inizi da professionista Fa la sua prima apparizione tra i professionisti nel 2011 alle qualificazioni di un torneo ITF Futures ad Aosta. Inizia a giocare con continuità nel 2013 ed entra per la prima volta nel tabellone principale di un Futures al torneo Turkey F50, vincendo al primo turno nel torneo di doppio. In singolare l'esordio in un Futures avviene nel 2014, nel marzo 2015 vince il primo incontro al Futures Turkey F10. A luglio raggiunge la sua prima finale da professionista in coppia con Alessandro Luisi, perdendo in tre set contro Andrea Collarini/Tomas Lipovsek Puches all'Italy F18 di Modena. Il mese dopo perde la finale in doppio anche all'Italy F24 di Piombino. Verso fine anno disputa per la prima volta i quarti di finale in singolare in due tornei Futures egiziani.
2016: primi titoli ITF Nel febbraio 2016 alza il primo trofeo da professionista vincendo in coppia con George Van Massow la finale in doppio al Futures Great Britain F2 di Sunderland. Quell'anno disputa in totale 12 finali in doppio nei tornei Futures, si aggiudica 6 titoli e sale nella classifica mondiale fino al 316º posto in ottobre. In singolare perde in aprile la prima finale in carriera all'Egypt F11 contro Jaroslav Pospíšil, e durante la stagione perde altre due finali. In luglio esordisce nel circuito Challenger vincendo al primo turno nel torneo di doppio di Recanati, mentre in singolare viene eliminato al primo turno.
2017: primo titolo Challenger Nel luglio 2017 raggiunge la sua prima finale in un Challenger a Recanati con Julian Ocleppo, perdendo in tre set contro Jonathan Eysseric/Quentin Halys. Il 26 novembre 2017 vince il primo trofeo Challenger in coppia con Lorenzo Sonego ad Andria, battendo in finale per 6–3, 3–6, [10–7] Sander Arends/Sander Gillé. Grazie a questo successo termina la stagione al 174º posto mondiale, nuovo best ranking. Nel 2017 vince inoltre 5 delle 9 finali Futures disputate in doppio, mentre in singolare non va oltre le 4 semifinali giocate nei Futures.
2018: tre titoli Challenger Nel 2018, dopo la vittoria in doppio in un Futures egiziano in febbraio, si dedica quasi esclusivamente ai tornei Challenger. Deve aspettare fine aprile per la prima finale stagionale in un Challenger, che vince in coppia con Ocleppo a Francavilla al Mare superando in due set Ariel Behar/Máximo González. In maggio fa il suo esordio nel circuito maggiore grazie a una wild card per gli Internazionali d'Italia, e insieme a Ocleppo viene sconfitto al primo turno. In giugno perde con Attila Balázs la finale del Challenger di Poznan e il 1º luglio conquista il terzo Challenger in carriera vincendo con Ocleppo la finale a Milano. La coppia italiana si ripete tre settimane più tardi trionfando nella finale della San Benedetto Tennis Cup e il 30 luglio Vavassori porta il best ranking alla 115ª posizione mondiale. Nell'arco della stagione non ottiene risultati degni di nota in singolare.
2019: un titolo Challenger Comincia il 2019 arrivando in finale con Gonçalo Oliveira all'Orlando Open, nei mesi successivi raggiunge 4 semifinali e il 9 giugno vince il Poznań Open in coppia con David Vega Hernández. In questo Challenger polacco ottiene il suo risultato più significativo di inizio carriera in singolare raggiungendo la semifinale, persa in due set contro l'esperto Tommy Robredo, risultato con cui guadagna 56 posizioni nella classifica mondiale e porta il best ranking al 339º posto. Perde le finali in doppio a Milano in giugno, a Recanati in luglio, all'Aquila in agosto e a Brest in ottobre. La classifica rimane stabile a ridosso della top 100.
2020: quarti di finale al Masters 1000 di Roma, top 100 e un titolo Challenger Inizia il 2020 con la trasferta in Oceania, al torneo ITF M15 di Te Anau perde la finale in singolare contro Luke Saville e vince quella in doppio in coppia Luca Margaroli, assieme al quale perde le finali ai Challenger di Numea e di Burnie. A metà gennaio aveva perso la semifinale in singolare a Bendigo contro Steve Johnson dopo aver eliminato nei quarti il nº 92 ATP Damir Džumhur, primo top 100 sconfitto in singolare. Il 10 febbraio raggiunge il suo miglior ranking in singolare al 278º posto. Perde con Margaroli la finale al Challenger di Bergamo. Dopo la lunga pausa dovuta alla pandemia di COVID-19, a settembre raggiunge per la prima volta i quarti di finale in un Masters 1000 in coppia con Sonego agli Internazionali d'Italia, dopo aver eliminato al primo turno le teste di serie nº 2 Rajeev Ram / Joe Salisbury. La settimana dopo perde la finale a Forlì insieme ad Andrej Golubev ed entra per la prima volta tra i top 100 del ranking. Eliminato al secondo turno del neonato ATP 250 Sardegna Open assieme a Sonego, vince l'ultimo Challenger della stagione a Maia in coppia con Zdeněk Kolář.
2021: un titolo ATP in doppio e debutto in un singolare ATP Nel gennaio 2021 arriva in semifinale all'Antalya Open (ATP 250) in coppia con Salvatore Caruso e sale al 90º posto del ranking. Il mese dopo viene convocato per la prima volta a rappresentare l'Italia all'ATP Cup e viene sconfitto con Bolelli da Mahut / Roger-Vasselin. Il 10 febbraio vince il primo incontro in uno Slam agli Australian Open in coppia con Sonego contro Paire/Arneodo prima di perdere da Bolelli e González. Il 10 aprile vince il primo titolo ATP al Sardegna Open, in coppia con Lorenzo Sonego, superando in finale Bolelli / Gonzalez per 6–3, 6–4. Due settimane più tardi raggiunge con Matteo Berrettini la semifinale al 250 di Belgrado, risultati che lo portano al 70º posto mondiale. Nei successivi 9 tornei vince in totale due soli incontri e viene eliminato al primo turno agli Internazionali d'Italia, al Roland Garros e a Wimbledon.
Raggiunge quindi la semifinale al Challenger di Salisburgo e i quarti nei tornei ATP di Båstad e Kitzbühel. A settembre perde la finale in doppio al Challenger di Como e si aggiudica il titolo in quello di Tulln an der Donau in coppia con Dustin Brown. Il mese dopo, ancora con Brown, vince il Challenger di Napoli e perde la finale in quello di Ercolano, l'8 novembre porta il best ranking alla 69ª posizione. Supera le qualificazioni e vince il suo primo match di singolare nel circuito maggiore all'ATP 250 di Stoccolma, contro Pavel Kotov per 6–3, 6–4, ed esce al secondo turno per mano di Denis Shapovalov. A fine mese conferma i progressi in singolare raggiungendo la semifinale al Challenger di Bari, che gli consente di portare il best ranking di specialità alla 262ª posizione, mentre viene sconfitto nella finale di doppio insieme a David Vega Hernández.
2022: una finale ATP, terzo turno agli US Open e top 60 in doppio; prime finali Challenger e top 200 in singolare Sconfitto al primo turno agli Australian Open, raggiunge i quarti di finale nei successivi tre tornei ATP in coppia con Sonego, in particolare all'ATP 500 di Rio de Janeiro dove eliminano al primo turno le teste di serie nº 2 Juan Sebastián Cabal / Robert Farah. In marzo perde in semifinale al Torino Challenger e a fine mese vince il titolo allo Zadar Open in coppia con Zdeněk Kolář. Ad aprile disputa a Marrakech la seconda finale nel circuito maggiore e in coppia con Jan Zieliński viene sconfitto in due set da Rafael Matos / David Vega Hernández. Un infortunio lo tiene fermo alcune settimane, rientra al Roland Garros e in coppia con Sonego viene sconfitto al secondo turno dopo aver eliminato gli specialisti Matthew Ebden / Max Purcell. In coppia con Nikola Ćaćić esce al secondo turno anche a Wimbledon, dove supera le qualificazioni in singolare e viene sconfitto al primo turno del main draw. Vince quindi il torneo di doppio al Challenger di Verona assieme a Luis David Martínez.
A fine luglio disputa a San Benedetto del Tronto la sua prima finale Challenger in singolare e raccoglie solo due giochi contro Raul Brancaccio. La settimana successiva vince il Challenger di Cordenons assieme a Dustin Brown e perde la seconda finale consecutiva in singolare, questa volta contro Zhang Zhizhen. Con questi risultati ritocca il miglior ranking in entrambe le specialità, salendo al 176º posto in singolare e al 63º in doppio. Alla sua prima partecipazione agli US Open, dove gioca assieme a Sonego, raggiunge per la prima volta il terzo turno in uno Slam dopo aver eliminato le teste di serie nº 9 Bopanna / Middelkoop. A settembre vince assieme a Brown i Challenger 125 di Stettino e Genova, superando in entrambe le finali Jebavý / Pavlásek, e sale alla 51ª posizione. Il mese successivo raggiunge con Sonego le semifinali nei tornei ATP di Firenze, nel quale battono nei quarti Mektic / Pavic, e di Napoli, perdendo in entrambe le occasioni dopo incontri equilibrati contro Ivan Dodig / Austin Krajicek.
2023: due titoli ATP e 41º in doppio, primo quarto di finale ATP in singolare Gioca i primi tornei stagionali assieme a Marcelo Demoliner, escono al secondo turno agli Australian Open e in semifinale all'Argentina Open, persa contro Bolelli e Fognini. A marzo vince il secondo titolo nel circuito maggiore al Chile Open con Andrea Pellegrino superando in finale Thiago Seyboth Wild e Matias Soto al terzo set. Con Luciano Darderi perde la finale di doppio al Viña del Mar Challenger ed esce in semifinale in singolare. Continua l'ascesa nel ranking ad aprile, quando si impone con Demoliner anche all'ATP 250 di Marrakech con il successo in tre set in finale contro Alexander Erler e Lucas Miedler. Nel torneo marocchino raggiunge inoltre per la prima volta i quarti di finale nel circuito maggiore in singolare: elimina la testa di serie nº 8 Nicolás Jarry, Jaume Munar e cede in due set a Daniel Evans. Perde la finale in doppio al successivo Challenger 125 di Oeiras. Al Masters 1000 di Madrid, dopo essersi qualificato per il tabellone principale, elimina l'ex nº 1 del mondo Andy Murray e perde al secondo turno contro Daniil Medvedev. Esce al secondo turno in doppio assieme ad Andrea Pellegrino agli Internazionali d'Italia.