Second-placed Inter, who had been gaining ground on Juve over the last 10 days, will see the result as two points lost since they are five behind the Turin side, who host Lazio on Monday. After that, there are four matches each to play.
Spinazzola had scored Roma's first goal amid protests from Inter who claimed Lautaro Martinez was fouled in the build-up.
"On the equaliser, there was a foul on Lautaro who was clipped on the heel," said Inter coach Antonio Conte, whose side made mathematically sure of a Champions League place next season by snatching a share of the points with fifth-placed Roma.
"But I don't blame the referees -- there was a mistake here but they don't deserve to be attacked for it."
Inter started with Lukaku on the bench, as the Belgian international had been struggling with fitness problems recently, and also dropped playmaker Christian Eriksen.
Roma dominated the early stages but Inter snatched the lead with their first real attack as Stefan de Vrij outjumped two defenders to head home from a corner in the 15th minute.
Replays suggested that Kolarov may have fouled Martinez but the referee stood by his original decision.
Inter often struggled to play their way out of defence and Roma went ahead in the 57th minute.
Henrikh Mkhitaryan burst forward and played the ball to Dzeko but it ricocheted off a defender and Dzeko was about to shoot when Mkhitaryan took it off his toe and scored.
Inter were rescued by Spinazzola's moment of misfortune and Lukaku sent Pau Lopez the wrong way to score his 21st league goal of the season. After that, the visitors finally found some attacking spark but they could not force a winner.
"It was a great performance," said Roma coach Paulo Fonseca. "Inter weren't creating any dangerous situations, they only scored from a set piece and another unlucky incident but that's football."