Nainggolan hurt his ankle in a crunching tackle with Lucas Biglia in the first half. The Belgian midfielder will undergo tests on Monday but is now a doubt for Wednesday’s Champions League match at Barcelona.
Forward Ivan Perisic went off in the second half, while midfielder Marcelo Brozovic could also miss the trip to Barcelona, with both players having right thigh injuries.
“I’m not worried because I have an important squad,” Inter coach Luciano Spalletti said. “It will be difficult for them to recover though.
“I will change some players for the Barcelona match because everyone has to feel involved in our journey, otherwise we can’t reach our aims.”
Inter has made a habit this season of scoring late goals and it did so for the fifth game this campaign when Icardi headed in Matias Vecino’s cross, just as the match seemed certain to end goalless.
“You can’t explain these feelings. I can only say it’s utter joy. Winning like this, with my goal right at the end, it’s really impossible to explain,” Icardi said.
“But we should have finished off the match earlier in order not to suffer, us and the fans. But we did it. We’ve kept up our positive run. Now we need to continue.”
It was third-place Inter’s seventh successive win in all matches and saw it cut the gap to leader Juventus to six points.
Milan had also come into the Derby della Madonnina on a hot streak, unbeaten in its previous eight matches.
“We took a step back in technical terms but we took a step forward mentally,” Milan coach Gennaro Gattuso said. “Inter did something more than us, they deserved the win, but our performance is not something to throw away. I really liked the team’s attitude.
“There are so many positive things to take from this match … The regret comes from the last 15 minutes, when the match was more open … we could have done better.”
In a game of few clear chances, both sides appeared lethargic at times — especially during the second half. Both teams did have a goal disallowed for offside while Stefan de Vrij hit the post for Inter.
Inter had the better opportunities and Matteo Politano’s effort was deflected narrowly past the upright while Milan goalkeeper Gianluigi Donnarumma did well to palm Perisic’s header around his left post.
Matias Vecino should have broken the deadlock on the stroke of halftime and the Uruguay midfielder had his head in his hands after ballooning the ball over from a great position.
The second half was an even cagier affair although Milan almost gifted Inter the lead when Biglia played a poor back pass, which took Donnarumma by surprise and the goalkeeper had to scramble to clear it.
Gian Piero Ventura’s return to football management could hardly have gone worse as his Chievo Verona team was humiliated 5-1 at home by Atalanta.
Ventura was hired by Chievo during the international break, replacing Lorenzo D’Anna. It’s the first job for the 70-year-old Ventura since he was fired as national coach nearly a year ago for Italy’s failure to qualify for the World Cup.
Marten de Roon opened the scoring, Josip Ilicic scored a hat trick and Robin Gosens netted the fifth before Valter Birsa converted a penalty for Chievo late on.
Chievo defender Federico Barba was sent off six minutes from halftime following a second yellow card.
Chievo’s only points have come from two draws and the squad is on minus 1 after being deducted three points last month for false accounting.
Fourth-place Lazio left it late before winning 2-0 at Parma.
Ciro Immobile converted a penalty nine minutes from time and Joaquin Correa sealed the result deep in stoppage time.
At the other end of the table, newly promoted teams Frosinone and Empoli shared the spoils in a 3-3 draw, which left both sides in the relegation zone.
Bologna remained two points above Empoli after coming back from two goals down to draw 2-2 against Torino.
Elsewhere, Fiorentina drew 1-1 at home to Cagliari.