Miranda batted .303 with 27 homers for the Vegueros de Pinar del Río club in Cuba's Serie Nacional from 2002 to 2004. In addition, he was included on the 2001 Cuban national team.
Miranda defected to the Dominican Republic in early 2004, on his seventh attempt. He established residency in 2005, and was granted citizenship there in 2006.
Miranda signed a four-year contract with the New York Yankees worth $2 million on December 12, 2006. He spent the 2007 season with their Single-A affiliate Tampa Yankees and Double-A Trenton Thunder. In 2008, he was promoted to Triple-A Scranton Wilkes-Barre Yankees.
On September 16, 2008, Miranda was called up by the Yankees for the first time in his career. He made his major league debut on September 18, 2008. His first major league plate appearance resulted in a walk. He was called up again briefly in April 2009, as a replacement for David Robertson.
Miranda recorded a walk-off game-winning single against the Kansas City Royals on September 29, 2009. He hit his first Major League home run on October 2, 2009 against the Tampa Bay Rays.
Miranda returned to the Yankees in 2010, when an injury to Nick Johnson provided him his first opportunity to receive extended major league action, appearing in 33 games over the course of the season.
On November 18, 2010, Miranda was traded to the Arizona Diamondbacks for minor leaguer Scott Allen. In July 2011, he was outrighted to the Triple-A Reno Aces.
On December 6, 2011, Miranda signed a minor league contract with the Tampa Bay Rays, which included an invitation to spring training. On June 9, 2012, he was released while playing for the Triple-A Durham Bulls.
Afterwards, Miranda played with the Vaqueros Laguna of the Mexican League in 2013 and for the Hokkaido Nippon-Ham Fighters of the Pacific League in 2014, where he hit for an average of .227 in 116 games with 42 walks and 14 home runs, but struck out 108 times in 427 plate appearances. Miranda returned to the Vaqueros Laguna for the 2015 season, then was traded to the Guerreros de Oaxaca on February 17, 2016. He was released on April 20, then signed with the Saraperos de Saltillo of the Mexican League on May 17. He was released on July 15, 2016. The following season, Miranda signed with the Bravos de León on May 30, 2017. He was released on July 1, 2017.
Juan has a son named Edgar Miguel Miranda who was born January 25, 2007.