ROME -- Juventus edged AC Milan 1-0 with a second-half penalty in a marquee Serie A matchup Sunday that left the Rossoneri's hold on a Champions League berth dangerously loose.
Arturo Vidal converted from the spot in the 57th minute after Milan's reserve goalkeeper Marco Amelia tripped Kwadwo Asamoah.
Amelia replaced Christian Abbiati in the 15th after the starter was injured.
Milan, which was without suspended Mario Balotelli, hardly threatened.
Cruising toward its second consecutive title, Juve remained 11 points ahead of second-place Napoli, which needed a last-minute winner to beat visiting Cagliari.
Milan, which is third, dropped seven points behind Napoli and is now only one point in front of Fiorentina, which beat Torino 4-3.
The top two finishers gain direct entry into the Champions League, while the third-place team enters the final playoff round.
Five rounds remain in the Italian league.
"We need four points (to clinch)," said Vidal, who scored twice in a win over Lazio on Monday. "We need two more wins then we can celebrate."
Juventus had last beaten Milan in Serie A in October 2011.
Earlier, Lorenzo Insigne, a 21-year-old forward born in Naples, scored the winner for Napoli with a long, angled shot four minutes into added time at the San Paolo stadium.
Victor Ibrabo had given Cagliari the lead in the 18th before Napoli struck back with an own goal from Davide Astori in the 48th and a close-range effort from Edinson Cavani in the 64th.
Marco Sau equalized for Cagliari in the 71st and the match appeared headed toward a draw until Insigne launched his well-placed shot from near the left sideline.
"I've tried many times to score a goal like that," Insigne said. "It was very emotional for me."
It took the officials several minutes to award the own goal, with a linesman initially ruling that Cavani was offside. However, Cavani didn't touch the ball and the officials eventually made the correct decision after constant appeals from Napoli players. After the decision, Cagliari coach Ivo Pulga was sent off for protests.
"It's absurd that 10 players go protest with the referees, who then take three or four minutes to decide. At this point you might as well use replays," Pulga said. "I'm not protesting the call. The referees made the right decision."
In Florence, Brazilian midfielder Romulo scoring the decider for Fiorentina in the 86th.
Juan Cuadrado, Alberto Aquilani and Adem Ljajic gave Fiorentina a 3-0 lead after just 33 minutes but Torino equalized with goals from Paulo Barreto, Mario Santana and Alessio Cerci in the 45th, 56th and 77th.
In the lunchtime fixture, injury-depleted Inter Milan needed a late goal from Tommaso Rocchi to beat visiting Parma 1-0 and end its three-match losing streak.
In the 81st at the San Siro, Rocchi took a pass from Brazilian fullback Jonathan and slotted past Parma goalkeeper Antonio Mirante from the centre of the area.
The victory gave under-pressure Inter manager Andrea Stramaccioni some much-needed breathing room and moved the Nerazzurri into fifth place -- which carries a Europa League berth.
In its last three matches, Inter had been outscored 9-5.
With an entire squad's worth of players injured, Inter had six youth team players on its bench and 19-year-old forward Luca Garritano came on in the second half.
Inter was helped when Roma dropped to sixth after getting held to a 1-1 draw at home by last-place Pescara. Roma youth product Gianluca Caprari gave the visitors the lead in the 14th with a header and Mattia Destro equalized from close-range in the 51st.
Destro also scored when Roma eliminated Inter from the Italian Cup semifinals Wednesday.
In the Sicilian derby, Josip Ilicic scored five minutes into second-half added time as Palermo drew 1-1 at Catania, which had gone ahead with a goal from Pablo Barrientos in the 69th.
Still, Palermo is tied for the penultimate spot with Genoa.
Siena, meanwhile, is just one point above the relegation zone after losing 1-0 at home by Chievo Verona. Sergio Pellissier put Chievo ahead in the 45th and Siena's Massimo Paci had a goal annulled for a foul in the 61st.
Also, Bologna and Sampdoria drew 1-1 with Alberto Gilardino and Nicola Sansone trading goals.