He played in Major League Baseball for the Florida Marlins, New York Mets, and Minnesota Twins from 1996 through 2010.
[1] In 1995, he was called up to the Kane County Cougars in the Class-A Midwest League, and was selected to the All-Star team.
Both at age 21, he and Édgar Rentería were the youngest middle infield combination in the history of the National League.
He was optioned to the Triple-A Charlotte Knights on July 28 and did not come back to the major leagues until the next season.
He was named the Marlins Most Valuable Player by the South Florida Chapter of the Baseball Writers' Association of America.
[1] Castillo started the 2000 season with a seven-game hitting streak from April 5 to 12, though he was placed on the disabled list with a strained back shortly afterwards.
He was again named the Marlins Most Valuable Player by the South Florida Chapter of the Baseball Writers' Association of America.
[4] Castillo won his second straight Gold Glove and posted the National League's second-best fielding percentage at second base (.991), behind Philadelphia's Plácido Polanco.
[1] Castillo was also a member of the 2005 National League All-Star team, and replaced Jeff Kent of the Los Angeles Dodgers at second base in the second inning.
He was traded to the Minnesota Twins on December 2, 2005, in exchange for two minor leaguers, Scott Tyler and Travis Bowyer.
He had a six-game hitting streak from May 6 to 13, and recorded his 300th career stolen base while facing the Chicago White Sox on August 26.
Castillo was traded by the Twins to the New York Mets on July 30, 2007, for two minor league players, catcher Drew Butera and outfielder Dustin Martin.
In 2008, a year plagued with injuries and several bench stints, Castillo hit .245 in 87 games, but still managed to steal 17 bases in 19 attempts.
In 2009 spring training, Castillo led all major league players in walks, with 17 from 56 official at-bats.
Although the Mets struggled as a team, Castillo enjoyed a bounce-back year in '09, hitting .302 with 77 runs scored and a .387 on-base percentage.
However, on June 12, with two outs in the bottom of the ninth inning and runners on first and second base, Castillo dropped an easy pop fly hit by Alex Rodriguez for a two-run game-ending error at Yankee Stadium, earning him a measure of infamy in the Mets–Yankees rivalry and a place in Mets' history.
He was replaced by Rubén Tejada who played at second base in the Mets' 5–4 win against the Florida Marlins at Citi Field.
He was criticized, along with Carlos Beltrán and Óliver Pérez, for not visiting injured soldiers at Walter Reed Army Medical Center with his teammates.