Redan efter tolv minuter gav ukrainaren Artem Dovbyk Girona ledningen. Men Barcelona kvitterade kort därefter genom Robert Lewandowski innan bortalaget återigen tog ledningen.
I den andra halvleken radade Barcelona målchanser och närmast kom mittfältaren İlkay Gündoğan vars avslut gick tätt utanför.
Med tio minuter kvar kontrade Girona och bollen hamnade hos Valery Fernández som petade den förbi Jules Koundé och rullade in 3–1.
Barcelona fick in en sen reducering men kom aldrig närmare än så – i stället kontrade Girona in 4–2, och det blev slutresultatet.
Gironas nya skrällseger gör att laget toppar La Liga efter 16 omgångar på 41 poäng, två ner till tvåan Real Madrid.
Barcelona? De är på en fjärdeplats, sju poäng upp till serieledaren.