Real Mallorca spoiled Frank Rijkaard's last home game with Barcelona, as they came back from two goals down to beat the Catalans 3-2 at Nou Camp.
Barca were 2-0 up on the hour mark, thanks to goals from the in-form Thierry Henry and Samuel Eto'o.
However, the visitors made a remarkable comeback as Borja Valero and Pierre Webo leveled the scoring, before the Primera Liga top scorer Daniel Guiza snatched an injury time winner with his 26th of the season.
Barca are now in danger of losing third place to Atletico Madrid after the latter's 1-0 victory over Deportivo Lacoruna made them level on 64 points with Rijkaard's team.
Elsewhere, champions Real Madrid played out a 2-2 draw at Real Zaragoza, who are on the verge of relegation.
Villarreal cemented their second place with a 2-0 home victory over Espanyol.
نرشح لكم
سيميوني مدرب شهر ديسمبر في الدوري الإسباني
كيكر: بايرن يستعيد الخماسي المصاب مع عودة الدوري
مواعيد مباريات اليوم 23 ديسمبر والقنوات الناقلة.. نهائي دوري المرتبط ومواجهات إيطالية ومصرية
والد نيمار: رفض عرضا من ريال مدريد يفوق عرض برشلونة بـ 3 أضعاف.. وهذا سبب رحيله
المرة الثالثة؟ ماركا: ريال مدريد قد يواجه فالنسيا بدون جمهور
انتهت سلسلة التعادلات في الدوري.. يوفنتوس يفوز على مونزا
سلوت: صلاح يقدم ما يفعله منذ سنوات في ليفربول.. ويجب أن نوفر له المساعدة
فالفيردي: مقطع فيديو لأهدافي سيصل إلى 30 ثانية.. وتدربنا على التسديد كثيرا