A stunning strike from Swiss midfielder Blerim Dzemaili opened the scoring on the hour mark and Edinson Cavani made it two six minutes later.
However away defender Nicolas Spolli headed Catania back into the game and substitute Lanzafame scored a moment after coming on to equalise late on and dent Napoli's hopes of qualifying for next season's Champions League.
There was little action of note in the opening 25 minutes, although Juan Pablo Carrizo was the busier keeper as Napoli sent in a few dangerous crosses.
Captain Marek Hamsik tested him more fully with a fizzing drive from 35 yards or more in the 28th minute then at the other end Gonzalo Bergessio should have been awarded a penalty when he was bundled over clumsily by Salvatore Aronica.
The game, always open to flowing passing moves, had found its edge as Napoli immediately went close again: Hamsik tried his luck with a dipping volley that Carrizo did well to palm wide as it bounced next to him.
Bergessio threatened to get in behind straight from the restart and that stung Napoli into action, Ezequiel Lavezzi firing wide of the near post following an excellent one-two with Hamsik.
Catania forward Alejandro Gomez had space to look for the far corner thanks to more good work by danger man Bergessio, but curled his effort well over.
A minute before the opening goal, Cavani looked certain to score. He lifted the ball past Carrizo but with everyone expecting it to nestle into the far top corner, it sailed just wide.
It did not seem to matter though when the ball broke free to Dzemaili, who rifled a thunderous strike into the far top corner from 30 yards. Carrizo could only get a weak palm on it.
Catania could have equalised when Morgan De Sanctis spilled an innocuous Giovanni Marchese cross and Bergessio hooked the ball towards goal. Salvatore Aronica slid back to thump it just wide from a couple of yards in front of the goalline.
And two minutes later Uruguayan Cavani was on the scoresheet. Played in by Goran Pandev - on as a sub for Hamsik - his finish came back off the far post to fool two desperately backtracking defenders and he found the net via the inside of the same post.
The Stadio San Paolo was celebrating in style, but it was to be short-lived.
Moments after Pandev had ended a slaloming run by cannoning a low shot off the inside of the post, Catania scored their first. Cristian Llama, another sub, crossed for fellow Argentine Spolli to head into the top corner unmarked in the centre of the box.
There were 16 minutes plus injury time remaining and Napoli, to their credit, did not sit back: Dzemaili sprung the offside trap and rounded Carrizo only to pull his shot from the right behind the covering defender and the far post.
With six minutes left to play, Lanzafame replaced fellow striker Gomez. Catania were lining up a corner at that moment and he won the header, only for Juan Camilo Zuniga to block on the edge of the six-yard box as he fell.
However the Italian followed up to smash home under the crossbar to seal a point and harm Napoli's quest for another Champions League appearance.
The Partenopei are now three points behind Lazio - who beat Cagliari 1-0 - and the third and final Champions League spot.