On November 19, 2008, he was added to the Twins' 40 man roster. After playing winter ball with Lobos de Arecibo of the Liga de Beisbol Profesional de Puerto Rico, Butera made the Twins out of spring training in 2010. He made his major league debut on April 9, 2010, against the Chicago White Sox, and got his first major league hit against the Cleveland Indians on April 22. He hit his first MLB career home run in a 13–10 eleven-inning win against the Philadelphia Phillies on June 19. As the Twins backup catcher he appeared in 49 games in 2010, hitting.197/.237/.296 with 2 home runs and 13 RBIs in 142 at bats. On May 3, 2011, Butera caught Francisco Liriano's no-hitter. In 2011 with the Twins he batted.167/.210/.239 with two home runs and 23 RBIs in 234 at bats. Butera began 2012 with the Triple-A Rochester Red Wings after hitting.279 in 15 games with 1 home run and 5 RBI. He was called up in May. On May 20, 2012, Butera pitched the eighth inning of the Twins 16–4 loss to the Milwaukee Brewers. Butera pitched a scoreless inning, issuing a walk and striking out Carlos Gómez. He threw a fastball and a changeup. In 2012 for the Twins he batted.198/.270/.279 with one home runs and 5 RBIs in 111 at bats. In 2013, he played for the Italy national baseball team in the 2013 World Baseball Classic. When the regular season started he only appeared in two games for the Twins, spending most of his time with Rochester, where he hit.229 in 26 games.
Los Angeles Dodgers
On July 31, 2013, Butera was traded to the Los Angeles Dodgers for a player to be named later. He was then optioned to AAA Albuquerque. In 16 games with the Isotopes, he hit.135. The Dodgers called him up on September 1. He appeared in just five games for the Dodgers, and had one hit in seven at bats. On May 15, 2014, in a 13-3 blowout loss to the Miami Marlins, Butera pitched a scoreless 9th inning, with his fastball reaching the mid-90s on the radar gun. On May 25, 2014, Butera caught Josh Beckett's no-hitter, becoming only the fifth catcher in Major League Baseball to catch a no-hitter in both leagues. He was the Dodgers' backup catcher all season and hit.188/.267/.288 in 170 at bats in 61 games with three home runs and 14 RBIs. The Dodgers designated him for assignment on December 5.
On December 9, the Los Angeles Angels of Anaheim acquired Butera from the Dodgers in exchange for a player to be named later or cash considerations. Minor leaguer Matt Long was sent to the Dodgers on December 18 to complete the trade. Butera batted 4-for-21 for the Angels. On May 4, Butera was designated for assignment.
Kansas City Royals
Butera was traded on May 7, 2015, to the Kansas City Royals in exchange for Ryan Jackson. Butera spent the latter part of the 2015 campaign as the backup for all-star catcher Salvador Pérez. In 2015 for the Royals he batted.198/.266/.267 with one home run and five RBIs in 86 at bats. Butera played a role in the 8th-inning comeback in Game 4 of the 2015 ALDS against Houston after Perez was lifted for a pinch-runner earlier in the game. Beginning the inning down 6-2, the score by the time Butera came to the plate was 6-6. Butera was able to draw a 10-pitch walk with one out and two men on, enabling Alex Gordon to hit a sacrifice grounder in the following at-bat for the go-ahead and winning run. In the deciding game 5 of the 2015 World Series, Perez hit a single in the top of the 12th inning and was replaced by pinch runner Jarrod Dyson, who went on to score the go-ahead run. As a result, Butera came out for the 12th inning and caught the game-winning strike from closer Wade Davis to clinch the championship for Kansas City. In 2016, Butera not only played catcher, but also pitched in two games, both blowout losses. On June 25, Butera pitched in the 9th inning, facing four batters, striking out one, and giving up no runs in a 13-5 loss to the Houston Astros. On July 26, Butera pitched the final out of the top of the 9th inning, facing only Johnny Giavotella who grounded into a force out in a 13-0 loss to the Los Angeles Angels of Anaheim. In 2016 with the Royals he batted.285/.328/.480 with 4 home runs and 16 RBIs in 123 at bats. On defense, in 2016 he had the best arm strength of all major league catchers. In 2017 he played for the Italy national baseball team in the 2017 World Baseball Classic. In 2017 for the Royals he batted.227/.284/.319 with 3 home runs and 14 RBIs in 163 at bats. In 2018 for the Royals he batted.188/.259/.289 with 2 home runs and 18 RBIs in 149 at bats.
Colorado Rockies
On August 31, 2018, Butera was traded to the Colorado Rockies in exchange for pitcher Jerry Vasto. In 2018 for Colorado he was 3-for-14. He elected free agency on October 29, 2018.
Philadelphia Phillies
On February 5, 2019, Butera signed a minor league deal with the Philadelphia Phillies that included an invitation to spring training. If added to the team's 40-man roster, he would have received a one-year contract for $1.3 million while in the majors, and $210,000 while in the minors. His contract had performance bonuses of $50,000 each for 50, 60, 70, and 80 games. The contract allowed Butera to opt out by March 21. Butera later exercised this opt-out clause, leading to his release.
Colorado Rockies (second stint)
On March 25, 2019, Butera signed a minor league deal with the Colorado Rockies. Butera had his contract selected on April 15, 2019. Butera was designated for assignment on May 3 and outrighted on May 7. On September 3, the Rockies selected his contract.