Gomes was born in São Paulo, Brazil. His mother, Claudia, moved the family to the United States after getting a job in Florida, and his father, Décio, is a tennis instructor. He was introduced to baseball by a Cuban coach his father met in São Paulo. Gomes' family moved to the United States when he was 12. Gomes married Jenna Hammaker, daughter of former pitcher and All-Star Atlee Hammaker, in 2012. The couple welcomed their first child, daughter Brooklyn, in 2014 and in 2017 they welcomed their second child, son Greyson.
Gomes made his professional debut with the Gulf Coast Blue Jays of the Rookie-levelGulf Coast League in 2009. He was promoted to the Auburn Doubledays of the Class A-Short SeasonNew York–Pennsylvania League that season. In 2010, he played for the Lansing Lugnuts of the Class AMidwest League and Dunedin Blue Jays of the Class A-AdvancedFlorida State League. Gomes played most of the 2011 season with the New Hampshire Fisher Cats of the Class AAEastern League, receiving a brief promotion to the Las Vegas 51s of the Class AAAPacific Coast League. During his first three professional seasons, Gomes spent most of his time as a backup catcher, but he soon began to receive playing time at first base and third base as well, as he sat behind top catching prospect Travis d'Arnaud in the organization's depth chart. After batting.359 with five home runs and 22 RBI at the start of the 2012 season with Las Vegas, Gomes was promoted on May 17, 2012 as the Blue Jays optioned the struggling Adam Lind to Las Vegas. Upon his MLB debut that day, Gomes became the first Brazilian player in MLB history. On the same day, Gomes got his first MLB hit, a single off of New York Yankees pitcher Phil Hughes. On May 18, 2012, Gomes hit his first ever MLB home run on the first pitch off of New York Mets pitcher Jon Niese in a 14–5 win. Gomes was optioned back to Las Vegas on May 27. He hit 5–22 with 2 HR in 8 games. Gomes was recalled from Triple-A on June 5, with pitcher Jesse Chavez being optioned to make room for him. Gomes was sent back down to Triple-A Las Vegas 51s on June 20. Gomes was again recalled from Triple-A Las Vegas 51s on July 19; pitcher Sam Dyson was optioned to Double-A New Hampshire Fisher Cats to make room on the roster. Gomes was optioned back to the Las Vegas 51s after an 11–2 loss to the Texas Rangers on August 19. Gomes was recalled to the Blue Jays active roster on September 7 after the Las Vegas 51s season ended.
Cleveland Indians
On November 3, 2012, the Blue Jays announced that they had traded Gomes and Mike Avilés to the Cleveland Indians for Esmil Rogers. The Indians recalled Gomes from the Triple-A Columbus Clippers on April 9, 2013. Gomes' first hit as an Indian was a 2-run HR on April 13, 2013 against the Chicago White Sox. Gomes was returned to Columbus on April 24 when Lou Marson came off the disabled list. He was brought back up on April 28 when Marson was returned to the disabled list. On July 30, 2013, Gomes faced André Rienzo, the first Brazilian pitcher in MLB history. He finished 1–2 with a walk and a single off Rienzo. Gomes and the Indians finalized a six-year, $23 million extension on March 31, 2014. In 2015 he batted.231/.267/.391. In 2016 he batted.167/.201/.327. He had the lowest batting average against right-handers among all MLB hitters, at.127. On August 9, 2017, Yan Gomes hit a walk-off 3-run home run against Colorado Rockies in a 4-1 win, which was his second walk-off home run in his career. In 2017 he batted.232/.309/.399. Batting.251 with ten home runs and 31 RBIs, Gomes was named to the 2018 MLB All-Star Game. He became the first Brazilian player to be featured in an All-Star Game in an American sports league. In 2018 he batted.266/.313/.449.
Washington Nationals
On November 30, 2018, Gomes was traded to the Washington Nationals for right-handed pitcher Jefry Rodríguez, minor league outfielder Daniel Johnson, and a player to be named later, later announced as Andruw Monasterio. In 2019 he batted.223/.316/.389 with 12 home runs and 43 RBIs, and won the World Series title. The Nationals declined a club option for $9 million to keep Gomes for the 2020 season, making him a free agent. On December 10, 2019, Gomes re-signed with Washington on a two-year contract.
Gomes helped the Brazilian national team qualify for its first ever berth in the World Baseball Classic by leading them out of the 2013 World Baseball Classic qualifying round. Gomes was the only Major Leaguer on Brazil's team for the qualifiers and helped his team advance despite the other teams in the pool at the time boasting several Major Leaguers. He opted not to participate in the 2013 World Baseball Classic to focus on winning a spot on the Indians' Opening Day roster.