The Turin giants had needed just a point to officially seal another title and become the first team to complete the league and Cup double for four consecutive seasons.
"7th scudetto in a row! Mind-blowing!," Juve's Swiss star Stephan Lichsteiner tweeted.
Roma played the final twenty minutes a man down after Radja Nainggolan was sent off for a second yellow card after a foul on Argentina striker Paulo Dybala.
It is the 34th Scudetto in Juventus' history.
Massimiliano Allegri's side also won the Italian Cup in the Stadio Olimpico on Wednesday with a 4-0 win over AC Milan.
With one game left to play Juventus cannot be caught by second-placed Napoli who are four points behind after winning 2-0 at Sampdoria on Sunday.
Eusebio Di Francesco's Roma team had already sealed their Champions League place next season after Inter Milan's 2-1 loss against Sassuolo.
"Juventus has a special mentality that has been built up over the years, they are a club that manages to stay united and compact in difficult times, and that's what the other teams have to do," Di Francesco said.
"We must not give up, we have a lot of young players who are new to this level, we also have to improve the group and strengthen where we are a little less strong."
Juventus had early chances with Edin Dzeko firing over, a Lorenzo Pellegrini right footer flying wide and Aleksandar Kolarov's free-kick hitting the side netting.
Paulo Dybala threatened early and broke through early in the second half after an Alex Sandro cross but the goal was disallowed because the Argentina striker was offside.
Nainggolan received two yellow cards in the space of five minutes and left Roma down to 10 men for the final 20 minutes.
But Juventus did not take advantage of their advantage although Dybala did have penalty appeals.