Thiago Monteiro connait une brillante carrière chez les juniors marquée par quatre titres en 2011 à l'Asuncion Bowl, la Copa Gerdau de Porto Alegre, l'Astrid Bowl à Charleroi, ainsi que le tournoi d'Offenbach[1]. Ces résultats le classent début 2012 à la 2e place mondiale du classement ITF Junior.
Il se fait connaître chez les professionnels en 2016 lorsqu'il bat le no 9 mondial Jo-Wilfried Tsonga au premier tour du tournoi de Rio de Janeiro alors qu'il n'était classé que 338e mondial (6-3, 3-6, 6-4)[2]. Cette victoire reste la plus belle de sa carrière et la seule contre un joueur du top 10. Dans la foulée, il atteint les quarts de finale du tournoi ATP de Sao Pãolo. Il continue sur sa lancée en remportant le tournoi Challenger d'Aix-en-Provence[3] et en disputant une finale à Lyon. En juillet, il passe un tour à Hambourg[4] et accède aux quarts de finale à Gstaad en battant Gilles Simon. Il rentre dans le top 100 du classement ATP en cours d'année et conclut sa saison avec un gain de près de 400 places[5]. En 2017, il est quart de finaliste des tournois de Buenos Aires et de Rio de Janeiro. Pour ses débuts en Grand Chelem, il passe un tour à Roland-Garros en battant difficilement l'invité Alexandre Müller (7-64, 2-6, 4-6, 7-63, 6-0)[6], ainsi qu'à Wimbledon.
Lors de la saison 2018, il atteint notamment les demi-finales du tournoi de Quito où il se distingue en éliminant Gaël Monfils en quart de finale[7]. Après une période infructueuse, il rebondit lors du tournoi de Hambourg, où, repêché des qualifications, il parvient à écarter successivement Gilles Simon et Fernando Verdasco pour se hisser en quart de finale[8] où il s'incline contre le Slovaque Jozef Kovalík. En 2019, il obtient ses principaux résultats sur le circuit secondaire avec trois nouveaux titres. En 2020, il est quart de finaliste à Buenos Aires et Santiago. Début octobre, il accède au 3e tour des Internationaux de France, battant au premier tour le 33e mondial Nikoloz Basilashvili (7-5, 6-4, 6-2) puis l'Américain Marcos Giron (7-65, 6-4, 6-1)[9], avant d'être stoppé par Márton Fucsovics (7-5, 6-1, 6-3).