Lazio loses 2-1 at Genoa to dent Champions League hopes
All the goals came in a five-minute spell with Danilo D'Ambrosio and Radja Nainggolan scoring for Inter, either side of Manolo Gabbiadini's equalizer.
Inter remained third but again moved four points clear of fourth-placed AC Milan. The top four from Serie A qualify for the Champions League.
The build-up to the match had been dominated by Icardi, who was stripped of his captaincy on Wednesday amid protracted contract negotiations, and the player then pulled out of the squad for the Europa League trip to Rapid Vienna and the match against Sampdoria, officially with a knee injury.
He was in the stands at San Siro with wife and agent Wanda Nara.
"I really appreciated that Icardi came to the stadium but I would have appreciated it even more if he had come into the dressing room afterward to celebrate with his teammates," Inter coach Luciano Spalletti said.
"To get back to normal there are more steps to be made, more efforts. Icardi has to experience with the team the happiness of being part of this group."
It was an open game and both teams went close on several occasions before Inter broke the deadlock in the 73rd minute with D'Ambrosio volleying into the roof of the net from close range after good work from Ivan Perisic.
Inter was caught napping three minutes later and Gabbiadini leveled with his first touch, seconds after replacing Riccardo Saponara.
Inter restored its lead two minutes later when a corner was knocked out to Nainggolan, who fired into the bottom left corner for his first goal since Nov. 3.
Napoli failed to make the most of its domination and that could cost it dearly.
Napoli had a number of chances but was frustrated by a mixture of poor finishing and some brilliant saves from Torino goalkeeper Salvatore Sirigu
Lorenzo Insigne also saw a curling effort come off the right post.
Napoli defender Allan was shown a second yellow card and sent off in stoppage time. However, after checking with the video assistant referee, the card was rescinded and Kevin Malcuit booked instead.
Lazio's misfortunes continued as it conceded a clumsy equalizer and a stoppage-time goal to lose 2-1 at Genoa, damaging its hopes of qualifying for next season's Champions League.
Lazio had a huge injury list with nine key players all ruled out, while Ciro Immobile was playing but not fully fit. It also lost defender Stefan Radu to injury during the match.
Milan Badelj gave Lazio the lead shortly before halftime and hit the crossbar after the break but Genoa leveled in somewhat fortunate circumstances when Lucas Leiva's attempted clearance bounced off Antonio Sanabria's leg and into the back of the net.
Genoa snatched all three points in stoppage time as a poor clearance fell to Domenico Criscito, who drilled it into the bottom right corner.
SPAL thought it had gone 2-1 ahead when Mattia Valoti scored on the counter-attack but the referee viewed a previous incident on VAR and opted to disallow the goal and award Fiorentina a penalty for Dias Felipe's trip on Federico Chiesa moments earlier.
Chievo Verona, which is in last place and 12 points from safety, lost 1-0 at Udinese.