Roma's Kostas Manolas headed the decisive third goal in the 82nd minute, putting the Italians in the last four for the first time since they reached the European Cup final in 1984.
Roma took the lead in the 6th minute through Edin Džeko, the ideal start to mount the comeback, but they still needed two more as well as a clean sheet. The towering striker was bundled to the floor by an overmatched Gerard Pique, earning the home side a penalty that skipper Daniele De Rossi dispatched coolly.
"The strength of this team is in looking forward, not back".
Roma had a spring in their step and were attacking in numbers as they looked for a quickfire second.
That Achilles heel resurfaced on Tuesday, as after a rousing first-half performance gave them hope, Salah's 39th goal of the season all but ended the tie 11 minutes into the second period.
Barca struggled to carve out openings and Roma went close again after 37 minutes through Florenzi, who rose above his marker before seeing his header tipped over the bar by Ter Stegen.
Sports Chelsea vs West Ham: Conte Reacts To Disappointing 1-1 Draw
From the subsequent corner, however, West Ham switched off and allowed Azpilicueta two bites before he jabbed the ball in. Chelsea survived and found their rhythm through the impressive combination of Eden Hazard, Willian and Alvaro Morata.
Dzeko was sublime throughout and netted early before winning a penalty after the break for De Rossi to pull Roma to within one goal of the last four.
And after substitute Stephan El Shaarawy had been denied by a last-ditch save by Ter Stegen at the back post in the 79th minute, Manolas nodded Cengiz Under's cross past the German to make it 4-4 on aggregate with eight minutes left to play.
Patrik Schick had the best chances to double Roma's lead before half-time on his Champions League debut, but continued the poor form in front of goal that has blighted his club-record move from Sampdoria.
Alongside Manchester City, Barcelona were one of the favourite to win this year's Champions League, but we will see semi-finals featuring Liverpool and Roma instead.