Dybala, who was linked with a transfer to Serie A side Inter Milan after his deal with Juventus expired, has signed a three-year contract with Roma.
The deal is worth 6 million euros ($6.14 million), Italian news agency ANSA said.
"The days that have led up to me signing this contract have been filled with so many emotions," Dybala said in a statement.
"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, Jose Mourinho, that it will be a privilege to work with."
The 28-year-old won five league titles and four Coppa Italia trophies with Juventus after joining them from Palermo in 2015, scoring 115 goals in 293 appearances across all competitions.
However, his last two seasons with the Turin-based club were hampered by a string of injuries.
Dybala, who has earned 34 caps for Argentina since his senior debut in 2015, will become Roma's fourth signing of the transfer window after the arrivals of midfielder Nemanja Matic, goalkeeper Mile Svilar and defender Zeki Celik.
"He has already joined up with his new teammates at the training camp in Portugal and will begin preparations for the new season this week," Roma said.
"Dybala has opted to wear the No. 21 shirt for the club."
Roma finished sixth in Serie A last season and won the Europa Conference League under Mourinho.
They kick off their league campaign with a trip to Salernitana on Aug. 14.