Cesc Fabregas pulled one back for the Catalans but they still trailed 2-1 a minute before the end of normal time.
The former Arsenal midfielder then scored again, before David Villa netted four minutes into injury time to clinch three points and retain Barcelona’s 100% record.