João Fonseca iniciou o ano como o 145º do mundo e finalizou como o 24º do ranking. Ele conquistou o Challenger de Camberra e estreou em Grand Slams no Australian Open, vencendo o russo Andrey Rublev.
João Fonseca seguiu fazendo história, entrando no top-100 e conquistando o título do ATP 250 de Buenos Aires, tornando-se o mais jovem brasileiro a vencer um torneio ATP.
Ele também conquistou o Challenger de Phoenix e alcançou a terceira rodada do Roland Garros. Em setembro, estreou no US Open vencendo o sérvio Miomir Kecmanovic, e conquistou uma vitória importante contra o grego Stefanos Tsitsipas na Copa Davis.
A temporada de João Fonseca foi coroada com a conquista do título do ATP 500 da Basileia, tornando-se o 2º vencedor mais jovem na Basileia e alcançando o 28º lugar do ranking da ATP. Ele é o 7º brasileiro a entrar no top-30 do mundo.