The Italians started strongly in Spain, but a comical Daniele De Rossi own goal put Barca ahead as the Roma captain managed to finish the ball into his own net from 15 yards out after attempting a slide tackle to cut out a loose pass eight minutes from half-time.
Kostas Manolas then added Roma's second own goal of the evening as he denied Samuel Umtiti by flicking the ball onto the post, but the rebound cannoned off his knee and into the net.
Barca's third came soon after as Roma goalkeeper Alisson made a decent save from Luis Suarez, but Gerard Pique was on hand to tap into an empty net after 59 minutes.
Roma rallied as the game wore on and with Marc Andre ter Stegen making two good saves in quick succession, Edin Dzeko scored what could be a priceless away goal with a calm finish 10 minutes from time to keep the tie alive.
However, the visitors once again suffered from poor defending as they failed to clear their lines with three minutes to go, allowing Luis Suarez to steal in and finish to restore Barca's three-goal advantage.
Barca will be confident of progressing to the semi-finals for the first time in three seasons after barely getting out of second gear at the Camp Nou, while Roma will be left to rue some awful defending which leaves them with a mountain to climb in Rome.
Barca boss Ernesto Valverde sprang a surprise in his team selection by leaving both Paulinho and Ousmane Dembele out, with Nelson Semedo making the starting line-up. Radja Nainggolan failed to recover from injury in time for Roma so Alessandro Florenzi started on the right of the front three.
READ MORE THINK YOUR FRIEND WOULD BE INTRESTED? SHARE THIS STORY USING ANY OF THE SHARE BUTTON BELOW ⬇ PLACE YOUR TEXT ADVERT BELOW:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>