Santos started his career at Comercial de Ribeirão Preto of Campeonato Paulista Série A2.
In July 2002, Santos joined Atalanta of Serie A on loan. He was the unused member of the team, and later signed permanent deal in summer 2003. He made 6 appearances for Atalanta, but this time at Serie B. Santos made his league debut on 18 January 2004, winning Salernitana 3–1 as starting defender.
He then was loaned to Monza, of Serie C2. Santos made 10 appearances, and one more at promotion play-offs. He earned a new contract that Monza bought half of the rights from Atalanta in 2005. He played 36 appearances in 2005–06 Serie C1, and 4 more on promotion play-offs. On 20 June 2006, Monza finally got the full ownership of Santos, but then sold Santos' half of the registration rights to U.C. AlbinoLeffe on 31 August 2006.
Santos joined AlbinoLeffe on 31 August 2006 for €280,000 in co-ownership deal in 3-year contract. Santos chose no.3 shirt for the first team. He played 28 matches in 2006–07 Serie B, including 27 starts. He was replaced by Mario Donadoni in the 5th minute of the round 13 match. Due to the injury, he missed 3 rounds. Santos missed the last 6 rounds of the league due to injury. He also missed round 5 to 7, the match before the winter break (round 18, on 22 December) and round 23 (suspension for 4th caution). Santos played his only substitute appearance in round 24, replacing Duccio Innocenti.
In June 2007, Monza agreed to sell remain half to AlbinoLeffe for another €360,000, but in August 2007, Genoa bought half of the rights from AlbinoLeffe.
Genoa signed Santos for €900,000 in co-ownership deal in August 2007; AlbinoLeffe also re-signed Filippo Carobbio from Genoa in June for €200,000, thus Santos' deal only involved €700,000 cash. Santos picked no.33 shirt. However, after a season he was sold to Reggina. Santos only made 11 starts in 2007–08 Serie A, as the team had centre-backs likes Cesare Bovo and Alessandro Lucarelli in its 3–4–3 or 4–3–3 formation. Santos had to compete with Francesco Bega (left in January) and Gaetano De Rosa for the third place of the centre-back, which the coach even used Abdoulay Konko in the 3-men defense.
Santos himself also missed two months (October to November) due to injury. Which he was injured in a friendly on 17 October and had an operation. Santos received his first call-up since injury on 10 November, but wait until 2 December to return to the bench.
Santos made his Serie A debut on 26 August 2006, losing to A.C. Milan 0–3. He returned to starting XI on 16 December (round 16), partnering Bovo in 4–4–2 formation. The coach rested Lucarelli and did not put Bega into the bench (who suspended in round 15). Santos also played the next match (round 17), as Bovo was suspended. He formed the 3-men defense with Andrea Masiello and De Rosa, winning Parma 1–0. However, from round 14 to 38 (25 in total) Santos only started 10 times, and the coach later even used 4-men defense with Domenico Criscito as emergency centre-back instead of using neither Santos nor De Rosa.
In July 2008 Santos signed with Reggina for €1 million from Genoa, made Santos was co-contracted between Genoa and Reggina. Genoa paid AlbinoLeffe €250,000 cash and Francesco Renzetti who tagged for €750,000 in order to acquire the 50% registration rights of Santos, but Renzetti was in fact acquired from Lucchese for €600,000 only, made Genoa instantly had a €150,000 profit. Reggina did not need to pay Genoa cash in the deal however, as Genoa also acquired Giandomenico Mesto (50% for €3.5 million) and Francesco Modesto (€5 million) from Reggina.
Santos wore no.33 shirt in 2008–09 Serie A and in 2009–10 Serie B.
Santos injured his achilles tendon in May 2009. In June 2009 Genoa re-acquired Renzetti for €250,000 and the remain 50% rights of Mesto for €3 million, while Santos' deal was renewed. The deal made AlbinoLeffe received €500,000 cash in total for Santos; as Santos' 50% rights actually worth €500,000 cash (instead of €1M), Reggina made a €500,000 discount for Mesto, but de facto unchanged. (from €2.5M cash + Santos to €3M cash)
Santos played his last official game for Reggina on 20 February 2010, the second match of new coach Roberto Breda. Despite constantly received call-up from Breda, Santos only able to appear once more as unused bench in round 39. He also trained separately at the end of season.
In June 2010 Genoa gave up the remain 50% registration rights to Reggina. Santos was re-affirmed to the squad. Santos played in pre-season friendlies in July under new coach Gianluca Atzori. However at the start of 2010–11 Serie B Santos' no.33 was taken by Vincenzo Camilleri (Camilleri himself had lost his no.5 shirt to Burzigotti) and Santos changed to wear no.34. He soon transferred to Greece.
On 7 August 2010 Santos was signed by Skoda Xanthi FC.
In May 2013 he was on trial with Toronto FC.