Matias Vecino snatched a point four minutes from time but Inter's winless run in Serie A continued as Roma left San Siro with a 1-1 draw.
Eusebio Di Francesco's side entered the match amid mounting speculation over Chelsea launching a bid for top scorer Edin Dzeko, but it was former AC Milan forward Stephan El Shaarawy who came to the fore with a coolly taken 31st-minute opener.
Mauro Icardi led Inter's charge during the closing stages as Brazil goalkeeper Alisson produced a pair of world-class saves to deny the Argentina striker.
But Di Francesco's decision to bring on defenders Bruno Peres and Juan Jesus invited an unsustainable level of pressure and Vecino was the beneficiary, powering home a pinpoint cross from Marcelo Brozovic.
Inter, who were unbeaten in Serie A until the middle of last month, have taken four points from a run of six winless games but remain three points ahead of Roma in the final Champions League berth.
| FT Inter 1-1 Roma
It's over! @MatiasVecinoUy's late header cancelled out El Shaarawy's opener as the #Nerazzurri kept pushing for a deserved goal. #InterRoma pic.twitter.com/WLnBkyAHPN — Inter (@Inter_en) January 21, 2018
In an open contest marked by some skittish defensive efforts early on, it was a surprise it took until the 17th minute for the first clear opening to fall Inter's way.
Joao Cancelo got past Gerson on the Roma left and whipped in a pinpoint cross for Ivan Perisic to head against the back stanchion when he should have worked Alisson.
Mauro Icardi had penalty appeals rejected for the hosts as he went to ground under attention from Kostas Manolas and Federico Fazio that was more clumsy than overly impeding, while Perisic fired too close to Alisson after neatly turning Alessandro Florenzi.
It was, therefore, slightly against the run of play when Roma took the lead – Davide Santon badly misjudged a long punt from the Roma keeper, so much so that El Shaarawy could recover from a loose first touch to dink a finish beyond Samir Handanovic.
Icardi stabbed wide under pressure from Fazio, failing to get the ball out of his feet in the 34th minute before it was Roma's turn to have a penalty claim turned down, with Florenzi tumbling after Miranda tugged at his shirt.
Spalletti sent on Brozovic for the ineffective Roberto Gagliardini but Inter remained short of fluency as Roma continued to disrupt them with intelligent pressing.
Miranda did enough to prevent Dzeko from heading home a 54th-minute corner, while the flailing Santon caught El Shaarawy with a stray arm as the Roma man sensed a second goal. Referee Davide Massa spared the French defender further ignominy.
And end-to-end feel remained as Alisson scrambled to get behind an Antonio Candreva strike before Manolas was unable to apply the finish when Dzeko flicked on Aleksandar Kolarov's dangerous cross.
Massa was not so lenient in the 69th minute, giving a deserved yellow card to Cancelo for an embarrassing dive vaguely in the vicinity of Fazio.
Spalletti's decision to introduce Eder lifted Inter entering the final 20 minutes, with Candreva's replacement instantly bursting into the box from the right channel and firing at Alisson.
Roma's keeper made a far more taxing save five minutes later, tipping brilliantly on to the post when Icardi seemed certain to turn home Perisic's cross on the half volley.
Eder then headed over from Cancelo's latest fine delivery. Alisson's further heroics down to his left from Icardi suggested it probably would not have mattered had the Italy forward hit the target.
Dzeko had just departed to the bench by the time Vecino ensured he would not enjoy a winning farewell if this is to be his goodbye.
Key Opta stats:
- Both of Vecino's goals this season have come against Roma.
- El Shaarawy has been involved in four of Roma's last eight goals.
- Roma's last two away goals in Serie A have been scored by El Shaarawy.