Juventus were confirmed as Serie A winners for the seventh season running following a goalless draw with Roma.
Napoli had effectively handed the crown to Max Allegri’s side after they were held to a 2-2 draw by Torino last weekend.
And needing just a point at the Stadio Olimpico, Juventus picked up the draw required to confirm a 34th Scudetto.
Roma, who had Radja Nainggolan sent off in the second half for two bookable offences, were already guaranteed a Champions League place after Inter Milan lost at home to Sassuolo on Saturday but they extended their advantage over rivals Lazio in the race for third to two points.
Napoli recorded their first win in three games with a 2-0 success at Sampdoria.
Polish forward Arkadiusz Milik struck from distance with 18 minutes remaining, with Raul Albiol heading in a second after 80 minutes.
Earlier Lazio had missed the chance to cement their Champions League place after needing a late goal from Sergej Milinkovic-Savic to draw 2-2 at relegation battlers Crotone.
Inter’s defeat meant Lazio could have secured fourth place by winning at Stadio Ezio Scida and Senad Lulic put the Biancocelesti in front from the penalty spot after 17 minutes, but Nigeria forward Simy headed in to equalise on the half-hour.
Federico Ceccherini then gave the home side hope of a vital three points when his close-range volley went in off the woodwork after 61 minutes.
With just six minutes left, Stefan de Vrij flicked on a cross and Milinkovic-Savic drilled it in.
Results elsewhere left Crotone in the bottom three.
Cagliari boosted their hopes of staying up with a 1-0 win at Fiorentina, who finished with 10 men.
Leonardo Pavoletti got the all-important goal, heading in a free-kick by Charalampos Lykogiannis after 37 minutes, with Fiorentina midfielder Jordan Veretout sent off in stoppage time.
Chievo moved up to 14th, two points clear of the relegation zone, after a 2-1 win at Bologna.
The home side went in front in the 12th minute with a penalty from Simone Verdi only for a stunning left-foot volley from Emanuele Giaccherini to level things up before Roberto Inglese’s strike on the hour secured all three points.
SPAL are still out of the bottom three, but sit level on points with Crotone after losing 2-1 at Torino.
Alberto Grassi put SPAL ahead with a low effort but Andrea Belotti equalised following a swift counter-attack and Lorenzo De Silvestri secured victory as he slotted in a second with just three minutes left.
Elsewhere, Udinese won 1-0 at Verona with a goal from Antonin Barak and AC Milan sealed their place in next season’s Europa League despite conceding a last-minute equaliser in a 1-1 draw at Atalanta.
Franck Kessie’s low drive put the visitors in front on the hour mark but a last-gasp goalkeeping error by Gianluigi Donnarumma allowed Andrea Masiello to equalise.
Both sides finished the game with 10 men, with Atalanta’s Rafael Toloi sent off after 64 minutes and Milan substitute Riccardo Montolivo following 11 minutes later.
The result also means Atalanta will guarantee seventh place and the final Europa League qualifying spot provided they get a least a point in their final match in Cagliari next weekend.