Born in Wuppertal to Spanish parents, he began his career with Post SV Wuppertal. Other clubs during his youth were Viktoria Rott and SV Bayer Wuppertal. In 1999, he moved to Bayer 04 Leverkusen. At 17, he played his first game for the Leverkusen senior team in the Bundesliga and in the Champions League. In his first year, he played the last 13 matches of the season. He played 21 times in the 2005–06 season as a substitute. From 2006, Castro moved from midfield to the back four of Leverkusen and played with solid performances in the starting eleven. For four years in a row he largely held his place. Only in the 2010–11 season, he saw his place on the right side of defence contested by Daniel Schwaab. Since the 2012–13 season, Castro has again played in midfield. Castro trained as a sports and fitness administrator at Bayer 04 Leverkusen.
On 24 May 2015, it was announced that Castro would join Borussia Dortmund after a transfer release clause of 11 million was met, signing a four-year deal. On 28 October, Castro scored a brace in a 7–1 win against Paderborn in the second round of the DFB-Pokal. On 29 November, Castro scored his first league goal for Dortmund in a 4–1 win over VfB Stuttgart. On 20 April 2016, he was one of three goalscorers as Borussia won 3–0 away at Hertha BSC in the semi-final of the same competition to reach the 2016 DFB-Pokal Final. In March 2017, the club extended his contract until 30 June 2020.
VfB Stuttgart
On 29 June 2018, Castro signed a three-year-contract with VfB Stuttgart, enabling him to join the club on 1 July 2018.
International career
In his youth, Castro was invited by the Spanish Football Federation to several courses. He played a single match for a Spanish junior selection and chose at the age of 18 to play for the German Football Association. Castro has played for the German national U-21 team at the 2006 UEFA European Under-21 Football Championship. After three test caps at the beginning of 2006, Castro gained a place in the German squad for the finals of the U-21 European Championship 2006 in Portugal. There he delivered solid performances. His biggest footballing success was winning the U-21 Championship 2009 in Sweden under coach Horst Hrubesch. In a 4–0 victory in the final against England, Castro scored the first goal in the 23rd minute. In the European Championship qualifier against the Czech Republic on 24 March 2007, Castro was called up to the senior squad for the first time and four days later, he made his debut against Denmark. This was followed by four more international appearances. Since then, Castro has never featured in the national squad.