Juventus, champions for a record seventh time in a row, could have sealed their success with victory but were unable to break down their 10 men opponents at the Stadio Olimpico.
On the back of winning the Coppa Italia in midweek, the visitors maintained their dominance of Italian football by playing for the point they required.
Next to come close for the home side was Aleksandar Kolarov, who sent a free-kick into the side netting, but Juve did start to show more attacking intent as Paulo Dybala found a way through only for the offside flag to go up.
Another Kolarov effort was then looped onto the roof of the net, before the complexion of the contest changed when Nainggolan was shown two yellow cards in quick succession to leave the Giallorossi a man light.
A Dybala penalty appeal aside when being nudged over in the box, the champions simply saw things through to claim yet another top-flight crown.
ROMA (4-3-3): Alisson; Florenzi, Fazio, Juan Jesus, Kolarov; Pellegrini (Gonalons 73'), De Rossi (Strootman 82'), Nainggolan; Under (Schick 81'), Dzeko, El Shaarawy
JUVENTUS (4-2-3-1): Szczesny; De Sciglio, Barzagli, Rugani, Alex Sandro; Matuidi, Pjanic; Bernardeschi (Douglas Costa 66'), Dybala, Mandzukic (Bentancur 81'); Higuain