Silva, 34, left City after the club’s Champions League to Lyon, having spent 10 years in Manchester.
- Smiling, scoring and making history: Romelu Lukaku is back to his best and closing in on Ronaldo
- Manchester City to honour David Silva with Etihad Stadium statue
He has signed a two-year contract with the Basque team.
Four January targets who could supercharge Man Utd's league bid
"Real Sociedad have reached an agreement with David Silva for the Canarian footballer to play for the Txuri Urdin team for the next two seasons, until June 30, 2022." A team statement read.
"The player, who arrives free after passing through Manchester City, will incorporate in the near future to the preseason of the realistic team."
It was initially expected that he would join Serie A side Lazio but instead Sociedad have jumped ahead of the Italian side and sealed a deal.
City have already announced that they will be building a statue for Silva, who helped them to win four Premier League titles.
Silva had previously stated his desire to play for boyhood club Las Palmas but admitted that he wouldn’t return if it meant playing in the Segunda Division.
Given Las Palmas failed to secure promotion in the season just gone Silva will have to wait a little longer for his reunion.
Real Madrid's tough transfer choice - Mbappe or Haaland?
City make late move for Benfica's Dias - Paper Round