Barcelona fick tillbaka Lionel Messi i startelvan, men föll ändå tungt mot Real Betis, som ledde med 2-0 i halvtid. Först gav Junior Firpo Betis ledningen innan Joaquin rakade in 2-0 från nära håll.
Barcelona reducerade i andra halvlek när Messi satte straffen i krysset efter att Jordi Alba dragits ner precis på kanten av straffområdet.
Men då stod Marc-André Ter Stegen för en grov miss, när han misslyckades att plocka Giovani Lo Celsos ganska tama skott, som istället gick in i mål.
Arturo Vidal reducerade igen efter han fick helt öppet mål av Munir, men Betis ökade glappet till två mål igen när Sergio Caneles kastade sig och fick en fot på bollen med sju minuter kvar av matchen.
Messi gjorde sitt andra mål på tilläggstid när han enkelt petade in bollen i ett helt öppet mål efter ett snyggt anfall av Barcelona, men det räckte inte för några poäng.
Matchen slutade 4-3 och Barcelona har nu bara en poängs ledning i toppen av La Liga, där både Atletico Madrid och Alaves jagar bakom. Barcelona fick dessutom Ivan Rakitic utvisad efter att kroaten dragit på sig två gula kort.
Barcelonas startelva: Ter Stegen - Sergi Roberto, Pique, Lenglet, Alba - Busquets, Rakitc, Arthur - Messi, Malcom, Suarez.
Real Betis startelva: Lópes - Mandi, Bartra, Sidnei - Cristian Tello, Guardado, Carvalho, Firpo - Lo Celso - Joaquín, Morón