The Spanish midfielder, who was once regarded as one of the best talents in Europe, joined Real Madrid from Racing Santander in 2012.
Injuries stunted his progress in the Spanish capital, and the 22-year-old joined Valencia in 2012. However, he has now moved onto Sociedad after struggling for first-team football this season.
"Good afternoon, I'm very pleased and happy to be at Real Sociedad, it's been a while that I've wanted to come here, in the negotiations I was very eager to come here and I hope to help La Real always fulfill their objectives. I hope to be here for many years to come," he told reporters.
"For two years it's been a joy to watch them play. The characteristics of their style of play coincide with mine. They are one of the elite teams in football and any player would love to come enjoy playing with them.
"Real Sociedad are a very stable club, with a united dressing room and this will help me a lot and they supported me, in regards to the injuries, which has been much discussed but I've completely forgotten about them and I'm ready to play right now."
Canales joined the Basque outfit on a four-and-a-half-year contract.