Morales grew up in Puerto Rico. He attended high school at Academia de Providencia in Rio Piedras, Puerto Rico. Morales was drafted by the Minnesota Twins in the 3rd round of the 2001 Major League Baseball Draft. Going into the draft, Baseball America wrote that "Morales has solid tools across the board for a shortstop, except for his speed... On the positive side, he's a switch-hitter who can handle the bat. Defensively, he has a strong arm and dependable hands."
Professional career
Minnesota Twins
From to, Morales played for the GCL Twins. He mainly played second base. In, Morales was converted to catcher and played for two Single-A teams, the Quad City River Bandits and the Fort Myers Miracle. Baseball America ranked Morales the 28th best prospect in the Twins organization after the 2003 season. In, Morales had a breakout minor league season. Playing for the Triple-A Rochester Red Wings, he played in 108 games and batted.311 with 2 home runs and 37 RBI. He was named to the International League midseason and postseason All-Star teams. On September 6, 2007, with Joe Mauer and Mike Redmond banged up, his contract was purchased by the big league club. On September 8, 2007, Morales made his major league debut against the Chicago White Sox. In the second inning, he collected his first major league hit, which was a single, against José Contreras. In the third inning, he collected his second major league hit, which was a double and would eventually score. In the fifth inning, he collected his third major league hit, which was once again a single. Two batters later, Jason Tynerlaid down a bunt single. When Morales was running towards second base, he lost his footing and injured his left ankle. Chris Heintz then pinch ran for Morales. The next day, the Twins purchased the contract of Matt LeCroy and placed Morales on the 60-day DL, thus ending his 2007 season. He ended the 2007 season having played just 1 game, batted 1.000, and scored a run. In 2008, Morales was hitting.315 with the Red Wings before going on the disabled list again June 12 with a sprained left ankle. In 2009, Morales made the Twins opening day roster due to an injury to starting catcher Joe Mauer. During Mauer's absence, Morales split catching duties with backup catcher Mike Redmond. Morales finished the year batting.311, which contributed to the team's decision to not bring back Redmond for 2010. Morales had surgery on his right wrist in January 2010, and was expected to be out until mid-March 2010. On September 22, 2010, Morales played first base for the first time in this career. In that game he made couple of nice plays on defense and went 3 for 4 with 3 RBIs.
Colorado Rockies
On December 16, 2010, he was traded to the Colorado Rockies for minor leaguer Paul Bargas. He appeared in 22 games for the Rockies in 2011, hitting.267. In June 2011, he was placed on the 60-day disabled list with a broken thumb after he was hit with a foul ball.
He signed a minor league contract with the Pittsburgh Pirates for the 2012 season. Morales played for Triple-A Indianapolis, where in 58 games, he hit.266/.360/.335 with 31 RBI. In November 2012, Morales elected free agency.