Antonio Conte's reigning Premier League champions would have secured a last-16 spot with a win but that appeared a tall order from the moment El Shaarawy opened the scoring after 39 seconds.
For his second, El Shaarawy owed much to the charity of Antonio Rudiger, the Chelsea defender who endured a forgettable return to his former club, before Diego Perotti brought the house down with another stunning long ranger after the hour.
Roma were the side to come back from a hefty deficit when the sides drew 3-3 at Stamford Bridge two weeks ago but Chelsea were not such willing dance partners and must now dust themselves down for a crunch clash with Manchester United this weekend.
Eusebio Di Francesco's hosts coughed up a chance from kick-off but found themselves a goal to the good inside a pulsating first minute.
Chelsea forward Pedro latched on to Tiemoue Bakayoko's pass to shoot tamely at Alisson before Aleksandar Kolarov carried the ball forward in response and launched a searching pass from the left towards Edin Dzeko.
The striker misjudged the flight of the ball but it struck the back of his head and fell invitingly for El Shaarawy to lash home an unstoppable shot from 25 yards, with Thibaut Courtois rooted to the spot.
Chelsea responded well to the setback, with Eden Hazard to the fore.
The Belgium playmaker, so impressive in their win at Atletico Madrid last month, was forced a fraction wide before calling Alisson into action and the Brazil goalkeeper thwarted him once more in the 20th minute after some sparkling footwork left Alessandro Florenzi and Federico Fazio perplexed.
An ill-judged backpass across goal by Kolarov presented Alvaro Morata with a chance to level – the Spain striker blazing over – before Roma sprung forward to double their advantage nine minutes before the break.
Radja Nainggolan's chipped pass forward was horribly misjudged by Rudiger, who let the ball run past him and El Shaarawy stole in to finish tidily.
Marcos Alonso cut in from the left and forced Alisson to push a rasping shot behind, while Bakayoko compounded Chelsea's woes by powering a header wastefully wide from the resulting corner.
Roma resumed with a determination to put the result beyond doubt, as Kolarov burst into the area to have a shot deflected behind.
Dzeko, Chelsea's chief tormentor at Stamford Bridge, was unable to turn home Perotti's subsequent set-piece and the former Manchester City striker collected El Shaarawy's pass to let fly only to narrowly beat the crossbar in the 53rd minute.
At the other end, Morata was a forward grasping more unconvincingly for form as he dragged tamely wide en route to concluding a sixth scoreless outing.
Di Francesco's side sealed the points with another majestic strike, albeit one assisted by Cesc Fabregas carelessly coughing up 63rd-minute possession to Kolarov.
The experienced left-back fed Perotti, who cut inside an apologetic challenge from Pedro and arrowed a superb low drive past Courtois at his near post.
Perotti passed up a more straightforward opportunity, blazing over from 12 yards after Dzeko led Rudiger, Cesar Azpilicueta and David Luiz a merry dance, and Courtois' point-blank save from substitute Kostas Manolas spared further damage.
Atletico's surprise 1-1 draw at home to Qarabag means Chelsea's qualification hopes are not too badly compromised but, given Conte's recent agitation regarding questions over his future in west London, this was an ill-timed and punishing reverse.
Key Opta stats:
- This was Roma's biggest win against an English side in the CL, the joint-biggest in all European competitions along with a 3-0 win vs Ipswich Town in 1982.
- Roma have picked up eight points so far (W2 D2): this is their best point tally after the first four games in the Champions League group stage.
- Stephan El Shaarawy's goal, scored after 39 seconds, was the fastest for Roma in their Champions League history, and the fastest conceded by Chelsea in the competition.
- Cesc Fabregas became the fifth youngest player to make 100 Champions League appearances (30y 180d old).