(CNN) -- Barcelona were stunned by an injury-time equalizer in the Camp Nou on Sunday which means they must wait another week to clinch the Spanish Primera Liga title.
Villarreal silenced the Camp Nou crowd with late equalizers to deny Barcelona.
Joseba Llorente scored for Villarreal to give them a 3-3 draw against a home side reduced to 10-men after defender Eric Abidal was sent off for the second time in a week.
Barcelona were seemingly coasting to the title as they led 3-1 after first-half goals by Seydou Keita, Samuel Eto'o and Daniel Alves, with Llorente scoring to give the visitors a lifeline.
But Villarreal pulled one back in the 77th minute as Abidal, sent off against Chelsea in the controversial Champions League win on Wednesday, gave away the penalty which led to his dismissal.
Mati Fernandez converted from the spot before Llorente grabbed his second to silence the celebrating home crowd.
But they are eight points clear of Real Madrid, who were thrashed 3-0 by Valencia on Saturday, with three rounds remaining.
Barca, who thrashed their arch-rivals 6-2 last weekend, can clinch the title next Sunday in a visit to Real Mallorca.
Barcelona have a record 86 points after 35 rounds with two-time defending champions Real on 78. Sevilla, 3-1 winners over Mallorca on Saturday are on 63 points.
Valencia occupy the fourth Champions League place after their superb win over Real, but Villarreal are just three points behind after their Camp Nou heroics.
Barcelona, who are in the final of the Copa del Rey and Champions League, are bidding for a unique treble for a Spanish side.