Juventus suffered a 2-1 loss at Napoli on Sunday, ending the Serie A champion's run of five straight wins in the league.
Piotr Zielinski scored the opening goal of the game midway through the second half, finishing on the rebound after Wojciech Szczesny pushed Lorenzo Insigne's shot back into the danger zone.
Napoli had lost four home league games in a row but climb to 10th in the table after Insigne volleyed in a second, Maurizio Sarri's return to Stadio San Paolo ending in Juve's second league defeat of the season.
Cristiano Ronaldo hit a late reply but Juve missed the chance to move further ahead of nearest title rival Inter and remains three points clear in top spot.
August's reverse fixture was a seven-goal thriller, Juve 2-0 ahead inside 20 minutes though needing Kalidou Koulibaly's late own goal to seal a 4-3 win, but this time half-time arrived with a single shot on target.
Arkadiusz Milik's tame header was comfortably saved by Szczesny with Napoli having had the edge in a strangely low-key opening 45 minutes.
Juve lost Miralem Pjanic to injury shortly after the break, the midfielder having been hurt in a tackle from Diego Demme before the break with Adrien Rabiot introduced in his place.
A late offside flag denied Ronaldo a 53rd-minute opener, the Portuguese then tricking his way past Elseid Hysaj to set up Gonzalo Higuain, whose low drive was stopped by Alex Meret.
Juve appeared in control but Napoli broke the deadlock on the counter in the 63rd minute when Szczesny parried Insigne's 25-yard drive and Zielinski was on hand to convert the rebound.
Napoli had penalty appeals rejected when Juan Cuadrado appeared to handle inside the box but the points were sealed by Insigne's strike that deflected in off Matthijs de Ligt in the closing stages.
Ronaldo gave Juve hope, extending his scoring streak to eight games, but when Higuain's overhead kick flew straight at Meret in the 94th minute, Napoli had secured a famous win.
What does it mean? Hope for Inter in title race
Juve - which started with Ronaldo, Higuain and Paulo Dybala all in attack - would have been six points clear had it won, with yet another title surely within its grasp.
This result will be welcomed by Inter, which earlier in the day was held to a third straight league draw, while Lazio moved five points behind Juve after drawing with rival Roma.
As for Napoli, a first home league win since October may prove a turning point in its season with results having failed to improve since Gennaro Gattuso was appointed as Carlo Ancelotti's successor.
Di Lorenzo stars as Koulibaly's deputy
Giovanni Di Lorenzo was excellent in the heart of the Napoli defence, showing calmness in possession and helping to keep Ronaldo and ex-Napoli striker Higuain quiet.
Szczesny error proves costly
With Gianluigi Buffon back on the bench after starting the midweek win over Roma, his replacement Szczesny made a bad mistake to hand Napoli the opening goal. Insigne's strike was not easy to deal with but Szczesny made a mess of his save, presenting Zielinski with a tap-in.
Juve will aim to bounce back when it returns to action at home to Fiorentina next Sunday, with Napoli away to Sampdoria a day later.
- IND vs NZ Live Score Updates, World Cup 2023 Semifinal: Gill, Kohli consolidate after Rohit falls; India 142/1 (19) vs New Zealand
- Japan Masters 2023: Lakshya, Priyanshu exit after losing in first round
- IND vs NZ: Virat Kohli becomes third Indian batter to cross 600 runs in World Cup edition after Sachin, Rohit
- ODI World Cup 2023 Semifinal 2: Bavuma fights fitness issues as South Africa takes on Australia
- Rohit Sharma becomes first batter to hit 50 sixes in ODI World Cup history during IND vs NZ semifinal