The Turkish giants have paid Roma an initial €16.5m for Zaniolo after he fell out with fans of the Giallorossi.
Zaniolo was linked with AC Milan and Bournemouth during the January transfer window but none of those moves could materialise.
A statement from Jose Mourinho's side confirming Zaniolo's exit read: “AS Roma can confirm that an agreement has been reached with Galatasaray for Nicolo Zaniolo. The forward has completed a move to the Turkish club on a permanent basis.
“Zaniolo joined the Giallorossi in the summer of 2018, going on to make 128 appearances for the club in all competitions – scoring 24 goals.”
In a farewell message to Roma, Zaniolo posted on Instagram: "You welcomed me as if I were at home.
"You made me grow, you gave me a chance that I tried to take with all my heart, always honouring the history you represent, fighting for your colours, sweating for the jersey every time I wore it.
"Now that we've said goodbye, I want to tell you one thing... It was an honour."
Galatasaray hold a nine-point lead at the top of the Turkish Super Lig but Zaniolo will have to wait a while for his debut after the country was ravaged by a deadly earthquake earlier this week.