Casilla was signed as a free agent by the Anaheim Angels in. On December 9, 2005, the Angels traded Casilla to the Minnesota Twins for pitcher J. C. Romero. Casilla made his major league debut with the Twins in September of, playing in nine games. In, after a brief call-up with the Twins, Casilla became the everyday second baseman after Luis Castillo was traded to the New York Mets. Casilla struggled, producing a.222 batting average with no home runs in 189 at-bats. In, Casilla did not make the Twins Opening Day roster and instead started for the Twins AAA affiliate, the Rochester Red Wings. After an injury to infielder Nick Punto, Casilla was called up in May. On May 19, 2008, Casilla hit a three-run homer, his first career MLB home run against Texas Rangers. It was also his first hit of the 2008 season. Casilla spent the rest of the 2008 season as the Twins' starting second baseman and second hitter in the lineup. At the end of the 2008 season, he was batting.281 with 7 home runs and 50 RBIs. Casilla struggled to begin the season. After hitting only.167 in his first 84 at-bats, he was optioned to AaA Rochester. He was recalled and had a.202 AVG,.280 OBP, and a.259 SLG. He had the most at-bats without a home run in the AL. In 2009, during the 2009 AL Central tie-breaker game featuring the Twins against the Detroit Tigers, Casilla became the unlikely hero, hitting a game-winning walk-off single to score Carlos Gómez from second base in the bottom of the 12th inning. Prior to the season, Casilla changed his number from 25 to 12, giving number 25 to Jim Thome, who had worn the number for almost his entire 21-year career. For most of the season, Casilla switched between second base and shortstop, sometimes filling in for Tsuyoshi Nishioka, who was injured for the first two months of the season. In 97 games, Casilla hit.260 with 2 home runs and 21 RBI's. Casilla made the Twins' Opening Day roster in 2012 and got off to a relatively slow start in his first 16 games. For the season, he played in a career high 106 games, hitting.241 with 30 RBI's.
Baltimore Orioles
On November 2, 2012 he was picked up off waivers by the Baltimore Orioles. On November 30, Casilla signed a one-year, $1.7 million deal with a club option for 2014 to avoid arbitration with Baltimore. Casilla made the Opening Day roster with the Orioles in 2013. After Brian Roberts went down with an injury 3 games into the season, Casilla entered a platoon with Ryan Flaherty at second base. Through June, Casilla was hitting.222 with 8 RBI and 10 R. When Roberts returned on June 30, Casilla's playing time drastically diminished, leading to only 4 appearances in all of July, and 20 appearances after June despite being healthy. In 62 games in 2013, Casilla hit.214 with 1 HR, 10 RBI and 15 R. He did not make an error in 170 chances in the field, with 169 of those being at second base. On November 4, Casilla had his $3 million club option declined, and was instead paid the $200,000 buyout, becoming a free agent. In January 2014 he signed with Orioles again and by April 17 of the same year was replaced by Jonathan Schoop due to his strained hamstring.
Casilla signed a minor league deal with the Tampa Bay Rays on February 2, 2015. He was released on March 31. The Rays re-signed him to a minor league contract on April 9.
Detroit Tigers
On June 29, 2015, the Tampa Bay Rays traded Casilla to the Detroit Tigers in exchange for a player to be named later. He elected free agency on November 6.
On May 24, 2017, Casilla signed with the York Revolution of the Atlantic League of Professional Baseball. On November 1, 2017, he became a free agent. On February 16, 2018, Casilla re-signed with the York Revolution. He re-signed again for the 2019 season, and became a free agent after the season.