Toronto Blue Jays Thomas signed with the Blue Jays for $750,000, forgoing his college commitment. Thomas made his professional debut that same year with the
Gulf Coast League Blue Jays before being reassigned to the
Bluefield Blue Jays. In 52 games between the two clubs, he batted .281 with one home run and 19 RBIs. In 2015, he played for both the
Vancouver Canadians and the
Lansing Lugnuts, hitting a combined .206 with five home runs and 35 RBIs in 52 total games. He spent 2016 with Lansing where he compiled a .216 batting average with seven home runs, 27 RBIs, and 17 stolen bases in 81 games. He began 2017 with the
Dunedin Blue Jays.
St. Louis Cardinals in 2019 On July 2, 2017, Toronto traded Thomas to the
St. Louis Cardinals in exchange for international signing bonus cap space. St. Louis assigned him to the
Palm Beach Cardinals, but he played in only nine games due to injury. In 82 total games between Dunedin and Palm Beach, he hit .252 with four home runs and 41 RBIs. Thomas began the 2018 season with the
Springfield Cardinals where he was named a
Texas League All-Star. He was promoted to the
Memphis Redbirds in late July and finished the season there, helping the Redbirds win the 2018
Triple-A National Championship Game. In 132 games between Springfield and Memphis, Thomas slashed .264/.333/.489 with 27 home runs, 88 RBIs, and 17 stolen bases. He was assigned to play for the
Surprise Saguaros of the
Arizona Fall League after the season. The Cardinals added Thomas to their 40-man roster after the 2018 season. He returned to Memphis to begin 2019. On April 17, he was recalled to the major leagues for the first time and he made his major league debut that same day at
Miller Park against the
Milwaukee Brewers. On April 19, against the
New York Mets at
Busch Stadium, he
hit a home run in his first major league at bat. On August 11, Thomas hit his first ever major league grand slam. On August 30, he was placed on the 10-day
injured list after being hit in his right wrist. On September 1, he was transferred to the 60-day injured list, effectively ending his season. Over 44 plate appearances with St. Louis, he hit .316 with four home runs. Thomas began the 2020 season with St. Louis. On August 9, it was announced he had tested positive for
COVID-19. He returned to play in October, and ended the season batting .111 with one home run over 18 games. In 2021, Thomas did not make the Opening Day roster. He split time between Memphis and St. Louis during the 2021 season before being traded, batting .104 in 58 plate appearances with the big league team.
Washington Nationals On July 30, 2021, Thomas was traded to the
Washington Nationals in exchange for starting pitcher
Jon Lester. Thomas was called up in August 2021 and soon became the Nationals' everyday center fielder, supplanting
Victor Robles. Over 45 games with Washington, Thomas slashed .270/.364/.489 with seven home runs and 27 RBIs. On June 3, 2022, Thomas enjoyed his first career three-home run game in a contest against the
Cincinnati Reds. In 2022 with the Nationals, he played in 146 games, led the majors in percentage of balls hit safely (23.2%), and batted .241/.301/.404 with 17 home runs, 52 RBIs, and 26 doubles. On January 13, 2023, Thomas agreed to a one-year, $2.2 million contract with the Nationals, avoiding salary arbitration. In 2023, Thomas became the Nationals primary
right fielder and enjoyed a breakout season, batting .268 and setting career highs with 28 home runs and 20 stolen bases. On January 11, 2024, Thomas and the Nationals agreed to a one-year contract worth $5.45 million to avoid salary arbitration. In 77 games prior to being traded, Thomas hit .253/.331/.407 with 8 home runs and 40 RBIs.
Cleveland Guardians On July 29, 2024, Thomas was traded to the
Cleveland Guardians in exchange for
Alex Clemmey,
José Tena, and Rafael Ramírez Jr. In 53 regular season games with Cleveland, Thomas hit .209/.267/.390 with 7 home runs and 23 RBI. On October 12, in Game 5 of the
American League Division Series against the
Detroit Tigers, Thomas hit a
grand slam off
Tarik Skubal in the bottom of the fifth for the Guardians to take the lead at 5–1 and propel them to the
ALCS for the first time since
2016 with a 7–3 win. In 10 playoff games, Thomas hit .222 with two home runs and nine RBI as the Guardians made it to ALCS. Thomas made 39 appearances for Cleveland during the 2025 campaign, batting .160/.246/.272 with four home runs, 11 RBI, and four stolen bases. On September 23, 2025, it was announced that Thomas had undergone season-ending surgery to address
plantar fasciitis. Thomas elected free agency on November 2.
Kansas City Royals On December 17, 2025, Thomas signed a one-year, $5.25 million contract with the
Kansas City Royals. ==Personal life==