"Matija Nastasic to the Royal Blues. Schalke get Serbia international on loan," the club said on Twitter.
The tall 21-year-old joined City as a teenager in 2012 on a five-year deal but has been unable to force his way into Manuel Pellegrini's side. Nastasic has made just one appearance for City this season, in the 3-0 Community Shield defeat by Arsenal in August.
Schalke, who are fifth in the Bundesliga, have conceded 21 goals in 17 league games compared to leaders Bayern Munich's four.
The Ruhr valley club face Real Madrid in the Champions League round of 16. Nastasic has not featured in any Champions League games this season.
The Bundesliga resumes on January 30 after the winter break.
Image: Matija Nastasic
Photograph: Clive Mason/Getty Images
Chelsea pull clear as Man City held by Everton
Erm... I think you forgot your pants!
'Kohli is someone whom Indian cricket can plan long-term with'
Will Neuer surprise Ronaldo and Messi to win Ballon d'Or? Vote!
What you must not miss in the EPL this weekend