The Lupi fell to an early goal from Daniele Verde, before AC Milan-loanee Tommaso Pobega doubled Spezia’s advantage before the break.
Spezia got off to a flying start as Giallorossi academy graduate Verde netted against his hometown club with only six minutes played. Having missed a good chance just moments before, M’Bala Nzola found space and threaded Verde in for the midfielder to break the deadlock.
Roma struggled to force their way back into the match, with efforts from Pedro and El Shaarawy the closest they came to an equaliser.
The hosts doubled their advantage shortly before half-time from a corner, as Pobega met Nzola’s flick on to tuck home from close range and pile further misery on Roma.
However, the Giallorossi came out fighting after the break and El Shaarawy netted early in the second half as he latched onto a loose ball and fired beyond Rafael.
Roma had a chance to draw level midway through the second period when Javier Pastore released Bryan Cristante, but the midfielder could only fire at Rafael when clean through.
With just five minutes remaining, the visitors levelled when Mkhitaryan scored from an Edin Dzeko touch, despite a lengthy VAR check, and the strike saw Roma move back into contention for European football.