Dybala, 28, left Juventus after seven years this summer when his contract with the Turin side expired.
“The speed and determination with which Roma demonstrated just how much they wanted me made all the difference,” Dybala said.
“I am joining a team that is on the up, a club that continues to put in place strong foundations for the future, and a coach, José Mourinho, that it will be a privilege to work with.
Dybala is Roma’s second high-profile signing during the transfer window after Nemanja Mati? joined on a one-year deal after his contract at Manchester United also expired.
Dybala scored 115 goals across all competitions in seven seasons at Juventus, helping the Bianconeri to 12 trophies — including five Serie A titles. But the often-injured striker fell out of favor under coach Massimiliano Allegri after the Turin club signed Dušan Vlahovi? in January.