Barca raced into a second-minute lead when Lionel Messi’s through-ball for David Villa took a deflection and Andres Iniesta surged into the penalty area and clinically fired home.
Shakhtar showed their resolve and Victor Valdes was forced into a fingertip save from Willian before Adriano wasted a glorious chance to level the score at the Camp Nou.
And the visitors were punished on 34 minutes when Iniesta found Dani Alves with a stunning diagonal pass and the Brazilian full-back showed great skill to take the ball round Andriy Pyatov and score.
Barcelona extended their lead further eight minutes into the second half as Gerard Pique’s finish beat Pyatov with the aid of a deflection off Yaroslav Rakitskiy, but the Shakhtar defender made amends six minutes later when he pulled one back.
However, the Catalan giants restored their three-goal advantage inside 60 seconds when Messi created an opening for Seydou Keita to blast the ball into the net, and Xavi then completed the rout four minutes from time following some fine work by Alves.