Javier Saviola put the hosts in front in the first-half before Anderson Nene leveled the score from the penalty spot seven minutes past the hour mark.
A controversial penalty by Ronaldinho restored Barca's lead 11 minutes later and substitute Ludovic Giuly ensured the victory five minutes from time.
The Catalan giants are in charge of the league table with 42 points, one ahead of second-placed Sevilla who beat Levante 4-2.
In-form Saviola broke the deadlock in the 34th minute after he received Giovanni van Bronckhorst's pinpoint cross with a glancing header into the back of the net.
Nene equalized in the 66th minute when he converted a penalty home after Lopez Angel was brought down by Oleguer inside the area.
It was Barcelona's turn in the 77th minute to be awarded a penalty when Van Bronckhorst was allegedly obstructed by Celta Vigo defender Gabriel Tamas.
Television replays showed that there was no contact and the incident occurred outside the 18-yards box.
Ronaldinho stepped-up and fired the ball into the top corner of the net.
Giuly, who replaced Brazilian midfielder Edmilson, added the third in the 86th minute when he latched-on to Deco's through pass before hitting the ball under Jose Pinto's body.
نرشح لكم
مدرب جيرونا: أتمنى ضم لاعب مثل تير شتيجن
سيجتمع مع تيديسكو مجددا؟ تقرير: فنربخشة يرسل عرضا لـ ميلان لضم نكونكو
قد يزامل عبد المنعم.. تقرير فرنسي: نيس دخل في مفاوضات مع راموس
ماركا: برشلونة يستهدف ضم فلاهوفيتش الصيف المقبل
انطلاق القمة العالمية للرياضة في دبي بمشاركة 1500 من النجوم والأساطير
موندو ديبورتيفو: جيرونا يتحرك بقوة لضم تير شتيجن
ذا صن: مرموش في صدارة المرشحين.. توتنام يحدد قائمة من 3 صفقات في يناير
مدرب جديد لـ محمد عبد المنعم في نيس











