The 27-year-old Italian international has at the same time extended his contract with Chelsea until June 2022.
“I am pleased to join Roma, after an experience overseas that helped me progress as both a player and a person,” Zappacosta said.
The right-back joined Chelsea from Torino on a four-year deal in 2017, making 52 appearances for the Blues of which 26 were in the Premier League.
Roma finished sixth last season in Serie A and open their campaign at home against Genoa on Sunday.