Coming into the contest on the back of three wins from their last four Serie A matches, Roma knew a positive result against the league leaders would see them close in on the top six.
It was Napoli, however, who edged a cagey opening 20 minutes as Scott McTominay saw a close-range effort comfortably saved by Mile Svilar.
Antonio Conte’s side continued to stamp their authority on proceedings and a breakthrough duly arrived in the 29th minute when former Roma player Leonardo Spinazzola raced onto Juan Jesus’ long ball, lifting a magnificent finish over the onrushing Svilar.
The hosts went in pursuit of an equaliser before half-time, but Alex Meret stood firm in the Napoli goal, saving smartly from Evan Ndicka’s glanced header to preserve Gli Azzurri’s narrow lead.
Unbeaten in nine of the previous 10 head-to-head's (W6, D3, L1), the visitors dominated the early stages of the second half as McTominay blazed wastefully over the bar after good work from Romelu Lukaku.
That served as a warning for Claudio Ranieri’s men, who came within inches of a leveller when Leandro Paredes’ curled free-kick struck the outside of the post.
The contest remained tantalisingly poised heading into the final quarter-hour, with Paulo Dybala coming off the bench for the hosts in the hope of salvaging a late point.
Napoli looked to have done enough with time ticking into stoppage time, but Alexis Saelemaekers’ inch-perfect delivery was brilliantly volleyed into the far corner by Angelino at the death to secure a dramatic share of the spoils.
The result extends Roma’s unbeaten home run to eight matches across all competitions (W7, D1), while Napoli miss the chance to go five points clear at the Serie A summit as their seven-match winning streak comes to an end.