Barcelona kwam in de 20e minuut op voorsprong dankzij Robert Lewandowski. De Pool schoot raak na een pass van Pablo Torre, de 21-jarige middenvelder die terugkeerde na een verblijf van een jaar bij Girona. Het was de vijfde competitietreffer dit seizoen van Lewandowski. De zesde volgde een kwartier later met een omhaal nadat de bal voor zijn voeten was beland terwijl hij met de rug naar het doel stond.
Villarreal verkleinde de marge in de 38e minuut door een treffer van Ayoze Pérez. Zorgelijker voor Barcelona was de blessure van Marc-André ter Stegen. De Duitse doelman kwam verkeerd terecht en moest met een brancard worden weggedragen. Iñaki Peña kwam hem vervangen.
Barcelona liep na rust uit. Eerst scoorde Torre, op aangeven van Pedri. Lewandowski verzuimde vanaf de strafschopstip zijn derde treffer te maken, alvorens Raphinha met twee doelpunten - de laatste na een knappe pass van Lamine Yamal - de eindstand op 1-5 bepaalde.