Juventus closed on their 29th Italian title with a 1-0 win over AC Milan thanks to Arturo Vidal’s second-half penalty on Sunday.
Juve need four points from the final five games after closest rivals Napoli, 11 points behind, saw off Cagliari 3-2 in dramatic fashion at the Stadio San Paolo.
A disappointing Milan side now have to think seriously about a resurgent Fiorentina, who beat Torino 4-3, and now sit just one point behind them in fourth.
The result left Fiorentina five points ahead of Inter Milan, who got back to winning ways with a 1-0 defeat of Parma, veteran striker Tommaso Rocchi’s 82nd-minute strike lifting some of the pressure on coach Andrea Stramaccioni.
A cagey, goalless first half in Turin saw only one real opportunity when Milan keeper Christian Abbiati was at full stretch to deny an Andrea Pirlo free kick which deflected off the wall.
Abbiati picked up an injury after his acrobatics and was replaced by Marco Amelia.
The home side went ahead in the 58th minute when Kwadwo Asamoah was clumsily upended by Amelia. Vidal stepped up and struck an excellent penalty into the right-hand corner.
With Milan struggling to find any fluidity and looking toothless in attack, Juve began to take control of the game, dealing comfortably with the visitors who were clearly missing the spark of the suspended Mario Balotelli.
Juve coach Antonio Conte was delighted with the victory but played down any title talk.
“Milan are Milan, they always play to win,” he told reporters. “It wasn’t easy for us, if we lost to them, Napoli would have been closer and some pressure would have built up.
“I wouldn’t say today was a decisive step but was a great step forward. To find ourselves 18 points ahead of Milan is a rare thing indeed. Was it a penalty? Without any doubt.”
Milan have now gone three games without a win but coach Massmiliano Allegri believes they can still enjoy a strong finish to the season.
“We conceded very little to Juventus, but then we created very little ourselves,” Allegri said.
“There are 18 points between us and Juventus. There’s really not a lot you can say when you’re up against a side like them, who could reach 90 points this season.
“This team still needs to grow, but in the meantime we need to think only about finishing third, it will still be a great achievement.”
Earlier, Naples-born Lorenzo Insigne scored deep into stoppage time to complete a 3-2 win for Napoli over Cagliari.
Insigne, the 21-year-old striker, fired in from just outside the area in the fourth minute of stoppage time to cement Napoli’s claims on an automatic qualification place for next season’s Champions League.
Cagliari took the lead against the run of play when Napoli failed to clear a corner, allowing Victor Ibarbo to let fly from distance and beat Antonio Rosati, deputising for the suspended Morgan De Sanctis.
The home side drew level three minutes after the break through a Davide Astori own goal, but in controversial circumstances.
Cavani was adjudged to have not been interfering with play, though the Uruguayan was in an offside position in the build-up to the goal, which took a hefty deflection off Astori from Marek Hamsik’s shot.
Napoli went ahead in the 64th minute, when Cavani was first to a loose ball following Cannavaro’s initial shot from a corner.
Cagliari made it 2-2 in the 71st when Marco Sau came off the bench to run at goal and hit a neat curling shot from the edge of the box.
“It was incredible stuff, at times we risked throwing away two points. We showed great strength at the end, to take a victory which, I think, was one we fully deserved,” Napoli coach Walter Mazzarri said.
In Florence, Juan Guillermo Cuadrado’s eighth-minute chip was followed by an Alberto Aquilani header, before Adem Ljajic scored direct from a free kick in the 34th minute to put Fiorentina 3-0 up.
Paulo Barreto got one back for the visitors on halftime, before Mario Santana made it 3-2 10 minutes into the second half.
Alessio Cerci then grabbed the equaliser with a powerful drive from long-distance.
Four minutes from time, Brazilian right-back Romulo made the most of a defensive mix-up to grab the winner for Fiorentina.
Roma, in sixth place, drew 1-1 at home with bottom club Pescara. The visitors went ahead with a first-half goal from Gianluca Caprari but Mattia Destro equalised six minutes after half-time.
The Sicilian derby between Catania and Palermo ended in a 1-1 draw after Josip Ilicic, in the fifth minute of stoppage time, cancelled out Pablo Barrientos’s 68th-minute opener for Catania.
Photograph: Alessandro Garofalo/Reuters