The Croatian World Cup runner-up headed in the winner 34 minutes into the match in Turin to put Juventus back eight points clear of Napoli.
The defeat could have been harsher but for Roma goalkeeper Robin Olsen denying Cristiano Ronaldo, with Douglas Costa having a late goal ruled out following a video assistant referee check because of a foul in the build-up.
"We are doing good things, we have reached the Champions League last sixteen and we're winter champions," said coach Massimiliano Allegri, referring to the name given to teams top before Christmas.
Serie A is however holding a round of fixtures on December 26 and 29, before pausing for three weeks.
"We haven't won anything yet," added Allegri. "The important thing is to be a few points ahead of Napoli on the 29th of December."
Juve -- who have only dropped points against Genoa -- travel to Atalanta and host Sampdoria in their final two matches before the end of the year.
Roma, after finishing third last season, are now 25 points behind Juventus and drop to 10th after their eighth defeat in as many trips to the Allianz Stadium. They have won just twice in the league since the end of September.
Napoli are way behind Juve but consolidated second place when Raul Albiol headed his first goal of the season from a Dries Mertens corner against to beat struggling SPAL.
"Thinking of Juventus is likely to demotivate us," said coach Carlo Ancelotti.
"We have to think about ourselves because this team can do more, we have room for improvement and I say it after today's match, which was not amazing."
Inter Milan were held 1-1 at bottom club Chievo to fall eight points behind Napoli, with the two clubs going head-to-head in the San Siro on December 26.
Inter looked set for victory when Ivan Perisic scored the opener six minutes before the break, but the evergreen Sergio Pellissier, 39, gave his side an early Christmas present when he lobbed Inter goalkeeper Samir Handanovic a minute into injury time.
The pressure is on Milan coach Gennaro Gattuso after Federico Chiesa's second-half scorcher pushed AC Milan out of the Champions League places at the expense of Lazio.
"There's no use looking at who's to blame. The team is going through a bad moment," said Gattuso, whose side have take just two points from their last three games and crashed out of the Europa League.
Gattuso's side are a point behind Simone Inzaghi's outfit, who ended their five-match winless league run with a 3-1 success over Cagliari in Rome that saw Sergej Milinkovic-Savic score his first goal in three months.
Fiorentina meanwhile move up to seventh, just three points off the top four places after achieving back-to-back wins for just the second time this season.
Krzysztof Piatek extended his lead at the top of the Serie A scoring charts when he scored his 13th goal of the season in Genoa's 3-1 win over Atalanta, the Polish striker moving two ahead of Juventus star Cristiano Ronaldo after sealing the points two minutes from the end.
City rival Sampdoria's fellow on-fire striker Fabio Quagliarella scored his eighth goal in seven league games as the Genoa club beat Empoli 4-2, taking his tally for this season to 10.