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.
نرشح لكم
مدير ريال سوسيداد: لا أتوقع رحيل زوبيميندي في يناير
ريكورد: سبورتنج لشبونة يقرر إقالة مدربه لسوء النتائج
فاران يحضر مباراة فريق طفولته بين الجماهير متسللا
خبر في الجول - بيراميدز يجدد عقد الشيبي.. والكشف عن المدة
فان دايك يتحدث عن مستجدات تجديد عقده
جوزيه مورينيو يجري عملية جراحية
سبورت: كانسيلو يريد العودة إلى برشلونة بأي ثمن ولكن
مونزا يعلن إقالة نيستا