Dries Mertens scored twice as Napoli held on to beat Roma 2-1 in the Derby del Sole at the Stadio Olimpico and close the gap on second place in Serie A.
Both teams had suffered midweek defeats in the Coppa Italia semi-finals and were out to stay within striking distance of leaders Juventus, while also keeping themselves in the driving seat for automatic Champions League qualification.
However, it was Napoli who produced the required performance as Belgian attacker Mertens netted in each half to move the Partenopei within two points of Roma and nine behind Juventus, who travel to Udinese on Sunday.
There was, though, late drama after Kevin Strootman reduced the deficit in the final minute and Napoli goalkeeper Pepe Reina produced a superb reaction save in stoppage time to push a deflected shot onto the crossbar.
On 13 minutes, Marek Hamsik floated a ball into the Roma penalty area but Mertens headed over.
Roma then had an effort from Diego Perotti disallowed for handball, before Napoli swept into the lead in the 26th minute.
Hamsik's pass split the Roma centre-backs, leaving Mertens racing clear into the penalty area where the Belgian chipped the ball over on-rushing goalkeeper Wojciech Szczesny.
Roma had a chance to level on 32 minutes, but Strootman lashed his first-time angled shot over the crossbar.
Mertens looked to have scored a second five minutes before half-time, but the referee spotted a trip on defender Federico Fazio in the build-up.
Napoli, though, did not have to wait long to have the ball in the net again.
On 50 minutes, Lorenzo Insigne was sent away down the left flank and carried the ball to the by-line before clipping it across the six-yard box, where Mertens arrived at the far post to knock in his 18th goal of the season.
The Giallorossi were close to quickly reducing the deficit when Reina tipped over a curling effort from Perotti.
Roma coach Luciano Spalletti sent on Mohamed Salah and Bruno Peres, replacing Stephan El Shaarawy and Fazio, in an attempt to inject fresh life into the hosts.
Edin Dzeko sent a header over and then dragged another half-chance wide.
There was a flashpoint with 20 minutes left when Roma midfielder Daniele De Rossi, who was already on a yellow card, appeared to kick out at Reina after being felled by the Napoli keeper when he came for a high ball in the penalty area.
The Napoli bench were incensed after the referee took no action, and eventually manager Maurizio Sarri took his protests too far and was sent to the stands.
Mertens, who looked to have picked up a knock, went off for the closing stages, replaced by Piotr Zielinski.
Szczesny prevented a late third for Napoli with a good reaction save to deny Marko Rog before Salah saw his low shot come back of the far post.
Roma finally pulled a goal back when Strootman slotted into the bottom corner after Perotti's run and cutback.
There was more drama in stoppage time when somehow Reina acrobatically clawed Perotti's goalbound deflected shot up onto the crossbar to secure Napoli a first win over Roma since November 2014.