Babak kedua baru berjalan empat menit sebelum Villarreal menuntaskan comeback mereka.
Alex Baena dengan penyelesaian kaki kanan first time yang bagus setelah dilepas oleh Alfonso Pedraza di sisi kanan pertahanan Barca.
Skor menjadi 3-2 bagi keunggulan tuan rumah.
Marcos Alonso kemudian hampir menyamakan kedudukan pada menit ke-64 setelah ia tak terjaga di tiang jauh. Namun, tembakan deras mendatarnya masih bisa diamankan oleh kiper Jorgensen.
Barca baru benar-benar membuat skor jadi 3-3 lewat dua gol cepat dimulai oleh usaha Ferran Torres pada menit ke-68.
Skor kemudian jadi 4-3 bagi Barcelona setelah Yamal menusuk ke dalam pertahanan Villarreal dan melepas tembakan kaki kiri.
Usaha Yamal masih memantul dari tiang tetapi striker gaek berusia 35 tahun, Robert Lewandowski, menceploskan bola pantulan ke gawang kosong untuk memastikan kemenangan Barca.
VILLARREAL vs BARCELONA 3-4 (Foyth 26', Sorloth 40', Baena 50'/Gavi 12', De Jong 15', Torres 68', Lewandowski 71')
VILLARREAL (4-4-2): 13-Jorgensen; 8-Foyth, 2-Gabbia, 5-Cuenca, 24-Pedraza; 20-Terrats (4-Comesana 70'), 6-Capoue (22-Suarez 70'), 10-Parejo (9-Diaz 86'), 16-Baena (15-Morales 77'); 7-Moreno (27-Akhomach 70'), 11-Sorloth.
Pelatih: Quique Setian.
BARCELONA (3-4-2-1): 1-Ter Stegen; 20-Roberto, 23-Kounde, 15-Christensen (24-Garcia 46'), 17-Alonso; 22-Guendogan (32-Fermin 86'), 18-Oriol Romeu (7-Torres 63'), 21-De Jong; 27-Yamal (10-Fati 76'), 9-Lewandowski, 6-Gavi.
Pelatih: Xavi Hernandez.
Simak breaking news dan berita pilihan kami langsung di ponselmu. Pilih saluran andalanmu akses berita Kompas.com WhatsApp Channel : https://www.whatsapp.com/channel/0029VaFPbedBPzjZrk13HO3D. Pastikan kamu sudah install aplikasi WhatsApp ya.