Zaniolo has signed a 4-1/2-year deal, and Galatasaray would pay Roma a transfer fee of 16.5 million euros ($17.70 million) and a further 13 million euros in add-ons, according to multiple reports in the Italian media.
The 23-year-old, who joined Roma in 2018 from Inter Milan, made nearly 130 appearances for Italy's capital club and scored more than 20 goals in all competitions.
"You welcomed me as if I were at home," Zaniolo wrote in a farewell post on Instagram.
"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."
Roma coach Jose Mourinho admitted in late January that Zaniolo asked to leave the club.
"I say 'unfortunately' because the player has been saying for a month that he wants to leave. If a player tells everyone he no longer wants to wear the Roma jersey, I have to say 'unfortunately," Mourinho said.
"The ideal situation is for the player to be happy. I said that I expected him to stay, but as things stand today, I have to add 'unfortunately' to that sentence."
Zaniolo, who has won 11 Italy caps, missed the second half of the 2019-20 season and whole of the 2020-21 campaign because of two serious knee injuries.
He returned in July, 2021 after Mourinho was appointed Roma coach, scoring six goals to help them win the Europa Conference League.
Galatasaray lead the Turkish Super League standings on 54 points from 22 games. They have a nine-point advantage over second-placed Fenerbahce who have a match in hand.