Former Manchester City forward Edin Dzeko was the hero. He got the first and it was his away goal at the Camp Nou that sent Roma through on an extraordinary night.
Barcelona fell behind after just six minutes when Daniele De Rossi lofted a perfect pass from deep midfield into the path of Edin Dzeko and after a couple of touches he put it past Marc-Andre ter Stegen.
The Catlans were stunned. Jordi Alba and Samuel Umtiti had ushered Dzeko goalwards instead of challenging him. Both had looked across to the linesman as the ball hit the back of the net but the flag had stayed down and Roma had the start they wanted.
Sergio Roberto had a shot saved by Alisson and Lionel Messi then sent a free-kick over but Barcelona continued to look nervous at the back and Patrik Schick went close with a header but failed to make the most of the fact that Ter Stegen had come for the ball and not got anywhere near it.
Barcelona were uncharacteristically lumping the ball forward to relieve the pressure. They certainly weren’t turning Roma dizzy on their passing carousel as the watching Sir Alex Ferguson had once described their finest football.
Barcelona did not commit a single foul in the first 20 minutes – Roma committed six. They were pumped-up and no one more than captain De Rossi who had played the pass for the goal.
He clashed with Rakitic as he tried to manufacture a second. And he started the move that should have brought the next goal on the half hour.
The 34-year-old played the ball forward to Kevin Strootman who fed Alessandro Florenzi. The wing-back crossed and Schick was unmarked as he rose well but headed wide.
There was then a third Schick chance. This time it was tougher as Radja Nainggolan’s shot ran into him and he tried to stab it past Ter Stegen only for Pique to first slide in and clear the danger.
Messi was having to chase back and close Roma players down in his own half and Luis Suarez was feeding off of scraps up front alone. He was bulldozed over by a clumsy foul from Federico Fazio who was booked.
The defender almost got himself sent off when Barcelona complained about the distance of the wall. De Rossi had to talk him down before Messi stepped up and sent the free-kick over.
Dzeko had the next Roma chance and Ter Stegen had to tip his header over after he had climbed well at the back post above Nelson Semedo.
The former City striker was a threat throughout, and as the first half wound down Roma’s biggest problem was their own lack of self discipline – Juan Jesus clattered Messi and went into the book.
In the second half things got worse for Barcelona. And again it was a ball over the top for Dzeko to chase that was there undoing. With the Roma forward shaping to shoot Pique wrestled him to the ground to conceded one of the season’s clearest penalties. Pique was booked and De Rossi stepped up to drill the penalty past Ter Stegen.
Iniesta was then chopped down by Fazio and it should have been a second booking. Ernesto Valverde was furious in his technical area and pursued the fourth official. He should have been thinking about what to change because Barcelona were in trouble.
Proof of that came when Messi had to take a yellow card for a trip on Aleksandar Kolarov just to prevent another Roma attack. And more proof came when Suarez was cautioned for time wasting.
The Italians looked stronger than their tired opponents, although Barcelona broke and Iniesta found Messi only for Alisson to save his shot. It was temporary respite for Barcelona who so nearly conceded a third when Ter Stegen saved from substitute Stephan El Shaarawy at point blank range.
The next attack did beat Ter Stegen and it was the end for Barcelona. Florenzi crossed and Manolas got in ahead of Semedo to steer his header past Ter Stegen and knock Barcelona out of the Champions League.