On June 20, 2010, the Astros promoted Castro to the MLB from the Class AAARound Rock Express. He made his MLB debut on June 22, 2010, at Minute Maid Park against the San Francisco Giants. He singled off Tim Lincecum in his first career at-bat. Castro hit his first major league home run on June 24, 2010, against Matt Cain. On March 2, 2011, while playing in a spring training game against the Detroit Tigers, Castro suffered a knee injury while running to first base. He underwent surgery two days later on March 4 to repair his torn anterior cruciate ligament and a damaged meniscus. As a result, he missed the entire 2011 season. On June 13, 2012, while pinch-hitting for Xavier Cedeño, Castro grounded out to Joaquin Arias to record the last out for Matt Cain's perfect game. He played 87 games in the 2012 season, finishing the year with a.257 batting average, 6 home runs and 29 RBI. On May 20, 2013, Castro was awarded the honor of being American League Player of the Week. He earned his first All-Star Game selection that season as a reserve catcher, but did not appear in the game. He led the Astros with a.350 OBP. He set club catcher records with 63 runs, 18 home runs, and a.485 slugging percentage. In September, he had surgery to remove a cyst from his knee and missed the rest of the season. He played 120 games that year. After the 2013 season, Castro completed the degree that he had started at Stanford. When he was drafted, he was 25 credits shy of the degree. He had returned to Stanford in the 2010 offseason to begin taking the rest of the courses, but he was delayed by rehabilitation from his 2011 injury. Before the 2014 season, Castro signed a one-year contract with the Astros worth $2.45 million. Before the 2015 season, he signed another one-year contract with the Astros, worth $4 million.
Minnesota Twins
On November 30, 2016, Castro signed a three-year contract worth $24.5 million with the Minnesota Twins. In his first season with the Twins, Castro hit.242 with 10 home runs and 47 RBIs in 110 games. On May 16, 2018, it was revealed that Castro was diagnosed with a torn meniscus in his right knee, which required season-ending surgery. In 2019, Castro played in only 79 games for the Twins due to sharing time with Mitch Garver, who had a breakout year. He hit.232 with 13 home runs and 30 RBIs.
On January 7, 2020, Castro signed a one-year, $6.85 million dollar deal with the Los Angeles Angels. On July 24, 2020, Castro made his Angels debut as a Opening Day starting catcher.
Personal life
Castro married Maris Perlman in late 2012. They met at Stanford, where Perlman played lacrosse. The couple founded Castro's Kids, a Houston-area literacy program.