Castro was born in Pontevedra, Galicia. After starting out professionally with local Pontevedra CF he moved to Málaga CF, but spent almost three seasons mainly registered with the Andalusians' reserves; in December 2005, he appeared in two consecutive home losses for the main squad, against CA Osasuna and Real Madrid. After both Málaga teams dropped down a level in 2006, Castro moved to Sporting de Gijón in division two, being an essential first-team element from the start. In the following campaign, Castro was arguably Sporting's most important player as he topped their scoring charts at ten, four of those coming through penalties. Sporting again managed to stay in the top division. Castro again led Sporting de Gijón in goals scored in 2010–11, netting one goal less. On 13 March 2011, after Nacho Novo won a penalty kick in the last-minute of an away fixture against Villarreal CF, he converted it in Panenka-style for a final 1–1 draw – the visiting team was then reduced to only nine players.
Getafe
Shortly after the season ended, Castro confirmed his departure from Sporting as a free agent, signing shortly after for Getafe CF. On 3 June 2015, after four years as first-choice, he left the latter after his contract expired.
Perth Glory
On 6 August 2015, aged 33, Castro moved abroad for the first time in his career, joining A-League club Perth Glory FC as their foreign marquee player. He scored his first goal for his new team on 25 October, contributing to a 3–1 home win against Adelaide United FC; he enjoyed a successful debut season, earning selection for the PFA Team of the Year and winning the Alex Tobin award as well as the Johnny Warren Medal. On 7 June 2016, Castro extended his stay with Perth Glory, agreeing to a deal believed to be worth approximately $500,000. Before the start of the 2018–19 season, he was named team captain. On 23 April 2019, Castro signed a two-year extension.
Personal life
Castro's father, Fernando Castro Santos, also had a career intimately connected with football. He coached several teams in the first and second divisions from 1992, also working in Portugal.