Barca got off to a perfect start, taking the lead after just four minutes, with Andres Iniesta setting Ivan Rakitic up for the goal.
The Spanish side dominated the game from then on in, but 10 minutes into the second half, Juve drew level as Alvaro Morata was able to tap home after Marc-Andre ter Stegen could only palm away a Carlos Tevez strike.
Luis Suarez was on hand to restore the Catalans’ lead, firing home the rebound after Gianluigi Buffon had kept out a shot from Lionel Messi.
Neymar thought he had made it 3-1 soon after, heading past Buffon, but the ball struck his hand and it was disallowed.
The young Brazilian got his goal eventually, taking on a Suarez pass and firing into the corner deep into injury time, as Barca won an impressive treble.