Castro was selected to the National League All-Star team along with teammate Bryan LaHair. Castro finished the 2012 season playing all 162 games with a .283 average, 14 homers, and 78 RBI. He was caught stealing 13 times which led the MLB. He also led the National League again with 646 at-bats. In August, Castro and the Cubs agreed to a contract extension through the 2019 season with a team option for 2020, with total guaranteed compensation of $60 million.