The Catalans avoided a first league loss since November with a last-gasp Luis Suarez strike after captain and top scorer Messi gave them hope with a deadly free kick in the 90th minute.
The draw resulted in Barca’s lead over nearest challengers Atletico Madrid, who had earlier won 2-0 at home to lowly Girona, being trimmed to eight points ahead of Saturday’s top-of-the-table showdown at the Nou Camp.
Even without Messi, Gerard Pique and Ivan Rakitic in their starting line-up, the visitors still strolled into the lead through a Philippe Coutinho goal in the 12th minute, which Brazilian forward Malcom soon doubled with a header. Place bet on today’s games on NaijaBet
But Villarreal, who began the game hovering one point above the relegation zone, hauled themselves into contention with a strike from 19-year-old Samuel Chukwueze midway through the first half.
Cameroon striker Karl Toko Ekambi took advantage of slack positioning from Barca goalkeeper Marc-Andre ter Stegen to equalise soon after the interval and Vicente Iborra completed the home side’s remarkable revival just after the hour mark.
Alvaro Gonzalez was then dismissed for Villarreal for a second booking with four minutes remaining, paving the way for Messi and Suarez to strike for Barca and produce a remarkable finish to an enthralling contest.