Juventus need one point from their last two games to win the Serie A title for a seventh straight season after Napoli were held by Torino.
Dries Mertens gave the hosts the lead with a tap-in on his 31st birthday.
Daniele Baselli equalised for the mid-table visitors before substitute Marek Hamsik restored Napoli's advantage with a shot from outside the area.
However, Lorenzo de Silvestri's late header all but ended Napoli's title hopes with two games to play.
Juve are six points clear with matches away to fourth-placed Roma on 13 May and at home to relegated Hellas Verona on 20 May to go. The leaders also have a far superior goal difference.
Napoli were a point behind Juve after beating the leaders 1-0 on 22 April. But they have picked up just one point from two games since.
Their final two games are away to ninth-placed Sampdoria on 13 May and at home to relegation-threatened Crotone on 20 May.
Latest Stories
-
Bahamas World Relays: Ghana paired with world and Olympic champions in Heat 1
7 hours -
Bahamas 2024 Relays: Star-studded cast ready to put on pre-Paris show
8 hours -
Bahamas Relays preview: clash of global title-winning teams in men’s 4x100m
8 hours -
Arsenal keeper Raya wins Premier League Golden Glove
8 hours -
Iñaki Williams scores twice in Athletic Bilbao’s win over Getafe
8 hours -
Argument with Salah ‘completely resolved’ – Klopp
8 hours -
Reus to leave Dortmund at the end of the season
9 hours -
Uefa confirms 26-man squads for Euro 2024
9 hours -
Teacher Unions press home demands for the new allowances
9 hours -
Media’s failure to hold government accountable for ‘galamsey’ alarming – Mahama
9 hours -
Keta Presbytery urges Akufo-Addo to assent to anti-LGBTQ+ Bill
9 hours -
Ghanaian midfielder Lawrence Ofori nets maiden goal of the season with stunner against Vizela
9 hours -
Community fearful after off-duty policemen shot dead at East Trasacco
9 hours -
Dext Technology partners KNUST to train basic school teachers on STEM
10 hours -
My efforts led to remarkable transformation in Appiatse – Lands Minister
10 hours