Peña was called up to the big leagues early in the 2005 season because of an injury to Eddie Pérez. He made his debut on May 23, 2005 in an 8-6 home win over the New York Mets. Starting at catcher and batting seventh, Peña went 1-4 and scored a run. His first hit was a second-inning single off Kazuhisa Ishii. At the big-league level for the year, in 18 games he batted.179 with four runs batted in. For the next three seasons, 2006-2008, he saw part-time action for the Braves, playing in 23, 16 and 14 games, respectively, and totaling 22 hits including two home runs. On May 28, 2006, he hit his first Major League home run, a seventh-inning solo shot off Roberto Novoa in a 13-12 Braves win. On May 23, 2008, the Braves designated Peña for assignment.
Kansas City Royals
On May 30, 2008, Peña was claimed off waivers by the Kansas City Royals. However, he was designated for assignment the next day, and did not appear in a game. He was promoted from the Royals' AAA affiliate on May 31, 2009. He then saw his most big-league playing time to date, appearing in 64 games and batting.273 with six home runs and 18 RBIs. In 2010, he earned a spot in the big-league roster during spring training and spent the 2010 season backing up Jason Kendall. He looked to earn a spot as a starter for the future in the last month of the season, as Kendall was out due to injury. Peña received the bulk of the playing time behind the plate in September. For the season, he played in 60 games and batted.253 with one homer and 19 RBIs. In 2011, Peña shared starting catching duty with Matt Treanor. By the end of the season, he served as the backup to Salvador Pérez. He played in a then career-high 72 games, batting.248 with three homers and 24 RBIs. On January 16, 2012, Peña signed a one-year deal for $875,000 with the Royals, avoiding arbitration in the process. On the season, he batted.236 with two homers and 25 RBIs. On November 20, 2012, the Royals designated Peña for assignment as they made room on the 40-man roster ahead of the Rule 5 draft.
Detroit Tigers
On December 10, 2012, Peña signed a one-year contract with the Detroit Tigers and was the backup for Alex Avila during the 2013 season. He played in 71 games in 2013, and posted the best batting average of his career at.297 to go with four home runsand 22 RBIs.
Cincinnati Reds
Peña and the Cincinnati Reds agreed to terms on a two-year contract, covering the 2014 and 2015 seasons. In 2014 Peña shared playing time with catcher Devin Mesoraco and played first base while first basemanJoey Votto was injured. By the 2014 all-star break, Peña was on his way to a career year, playing in 65 games and batting.250 with three home runs, 17 RBIs and an already career-best 12 doubles. On November 2, 2015, Peña became a free agent.
St. Louis Cardinals
On November 30, 2015, Peña agreed to a two-year, $5 million contract with the St. Louis Cardinals to be the primary backup to Yadier Molina. In mid-December 2015, Peña accompanied an expedition to Cuba composed of former Cardinals including Joe Torre and Jon Jay, and other MLB officials and players. It was MLB's first visit there since 1999, and one anticipated as an important step to help normalize relations with the United States that had begun to ease earlier in the year. He began the season on the DL after surgery to remove loose cartilage in his left knee, which he attributed to slipping on the dugout steps in spring training. On July 5, 2016, Peña announced that he was planning to join the Army Reserve after the 2016 season. Later that day though, he was informed that he was unable to enlist because such an action would violate the terms of his contract. Peña chose to become an ambassador for the troops instead. On November 21, 2016, the Cardinals designated Peña for assignment.
Return to the Royals
Peña signed a minor league contract with an invitation to spring training on February 7, 2017. He elected free agency on November 6, 2017.
Return to the Tigers
On January 9, 2018, the Detroit Tigers signed Peña to a minor league contract with an invitation to spring training. He was released on June 11, 2018. Peña announced his retirement from professional baseball on June 18, 2018.
Managing career
Peña served as the manager of the Tigers' Gulf Coast League West team, who won the Gulf Coast League Championship in 2018. During the 2019 season, he served as manager of the short season-A Connecticut Tigers. On November 12, 2019, he was named manager of the West Michigan Whitecaps.