Madrid - Barcelona moved back to within a point of La Liga leaders Real Madrid as they twice came from behind to beat Villarreal 3-2 in a thrilling encounter on Sunday.
Madrid loanee Denis Cheryshev put Villarreal ahead against the run of play after half an hour only for the in-form Neymar to level just before the break.
A crazy four-minute spell early in the second-half then yielded three goals as Luciano Vietto put Villarreal back in front, but Rafinha quickly equalised before Lionel Messi struck a memorable winner from the edge of the box.
Victory takes Barca back three points clear of third-placed Atletico Madrid, but Real can regain their four-point lead at the top when they host Sevilla in their game in hand on Wednesday.
"For us it is a pleasure to have players that can change the game and they are in special form," Barca boss Luis Enrique said of Messi and Neymar, who have now scored 17 goals between them in their last seven outings.
However, Villarreal boss Marcelino lamented his side's inability to put the pressure on Barca by conserving their leads for a prolonged period of time.
"We played a great match and competed with them using our own strengths. The goal they scored 30 seconds before half-time damaged us. Then within two minutes of going 2-1 in front they scored two.
"That is Barca. They have the best players in the world in attack and punish any error you make."
Barcelona started brightly but Luis Suarez's struggles in front of goal continued as the Uruguayan failed to hit the target twice when well-placed inside the area, as well as seeing a fine strike from the edge of the area turned behind by Sergio Asenjo.
The hosts were then punished for the former Liverpool man's profligacy when Villarreal broke and Mario Gaspar's wayward effort was deflected beyond Claudio Bravo by Cheryshev.
Crucially Barca managed to get on level terms a minute before the break when Asenjo again parried from Rafinha's curling effort, but Neymar was on hand to continue his scoring streak with his 22nd of the season.
Enrique's men were caught out once more at the start of the second-half, though, as a former Barca favourite Giovani dos Santos galloped in behind the Catalans' defence and squared for Vietto to apply a simple finish.
However, again Villarreal couldn't hold onto their lead for long as just two minutes later Suarez squared for Messi and when his headed effort was blocked, Rafinha pounced to rattle home from close range.
Suarez then teed up Messi once more as Barca turned the game on its head moments later when the Argentine fired high past Asenjo on his weaker right foot from outside the box.
Villarreal refused to give in and briefly thought they were level when Mateo Musacchio bundled home from close range only to be denied by an offside flag.
From the resulting free-kick Barca sped upfield and Neymar was unlucky not to win a penalty when he was wiped out by Asenjo before Suarez failed to turn Dani Alves's driven cross on target.
A first defeat in 19 games in all competitions leaves Villarreal now four points adrift of Sevilla in the final Champions League spot.