Belotti was a free agent after his contract with Torino expired this summer.
Despite offers from several clubs including Galatasaray and Wolverhampton Wanderers, Roma's project was the one that excited Belotti the most.
The 28-year-old's contract will be extended by a further two years should certain performance-related conditions be met this season.
Belotti spent seven seasons with Torino, scoring 113 goals in 251 appearances across all competitions.
He becomes Roma's sixth summer signing after Nemanja Matic, Mile Svilar, Zeki Celik, Paulo Dybala and Georginio Wijnaldum.
Belotti has been given the number 11 jersey and could make his debut against Monza in Serie A on Tuesday.
"The ambitions and growth of Roma are there for all to see, and have exerted an incredible fascination in me," Belotti told the club's official website.
"At this point in my career, I want to continue to improve, day after day, and I am happy to be able to do it with this new shirt.
"Now, I can't wait to hear the anthem at the stadium, in front of our fans."
Roma general manager Tiago Pinto added: “Andrea is one of the most prolific forwards in Serie A and his addition further strengthens our attacking ranks,” said the Portuguese executive.
“His determination in choosing Roma has really struck a chord with all of us and today we are absolutely delighted to be able to begin this new adventure.”
Belotti was part of the Italy side that won last summer's European Championship.