Lionel Messi scored as Barcelona came from two goals down to beat Villarreal 3-2 and save their title challenge.
The result means Barca are second, four points behind leaders Atletico Madrid with three games to play, the last of which sees Atletico travel to Camp Nou. Real Madrid in second are six points adrift of the leaders with a game in hand.
Villarreal conceded two own goals to shoot themselves in the foot and throw away a win that would have guaranteed Europa League football next season.
Cani netted with only seconds of the first 45 minutes remaining as Villarreal finally made the most of one of their dangerous counter-attacks. Trigueros added a second after the break as Barca were again punished for failing to turn possession into penetration.
Barca got one back through Gabriel’s own goal and drew level when Musacchio lost his bearings and headed past Sergio Asenjo.
Messi put Barca ahead for the first time of the evening when he struck a powerful volley past Asenjo after Cesc Fabregas found the Argentine with a cushioned header from Sergio Busquets’ chipped pass.
Before kick-off there was an emotional tribute to Tito Vilanova, who passed away on Friday. Several of the Barca players and staff were visibly moved as they, their Villarreal counterparts and the supporters in the stadium paid their respects to the former Barca Coach.
Reports from Spain during the match alleged that a banana was thrown at Dani Alves partway through the second-half, with the full-back responding by picking it up and eating it.
Alex Song dropped to the bench for the returning Sergio Busquets in Barca’s only change from their last outing, the 2-1 win over Athletic Bilbao.
Villarreal made three changes from their 2-0 defeat to Malaga and were forced into another inside a quarter of an hour when Jeremy Perbet had to be withdrawn with an ankle injury. Jonathan Pereira replaced him.
Marcelino had to deal with a second injury blow before the break as Tomas Pina had to leave the field, Javier Aquino coming on in his place.
Barca had the majority of the play in the early going but little to show for it. Sergio Asenjo went untroubled in the Villarreal goal until Lionel Messi forced the goalkeeper to save with his legs in the 17th minute.
None of La Liga’s top four have won at El Madrigal this season and the first-half told Barca why. The Yellow Submarine was more like the yellow wall but Villarreal also maintained a threat on the break.
Pereira and Giovani dos Santos both had half chances as Villarreal went closer to scoring than Barca despite being largely starved of the ball.
Barca moved the ball around patiently but anytime a gap was found it was quickly filled by a yellow shirt. And then on the stroke of half-time Cani converted Pereira’s perfectly weighted through ball to give the home side a hard-earned lead.
The first incident of the second-half was a spat between Asenjo and Alexis Sanchez. Aquino’s loose back-pass gave Alexis a chance to run in behind but the ball was cleared, with Asenjo wiping out Alexis in the process. The goalkeeper bumped into the grounded Alexis, who swung an arm at his leg and got a yellow card in return.
Messi then had a shot parried by Asenjo as Barca pushed for an equaliser. Not long after Asenjo parried a Messi free-kick came Villarreal’s second, the ball worked to Aquino in space on the right and the cross met beautifully by the on-rushing Trigueros.
Tata Martino brought on Christian Tello and Fabregas for Alexis and Xavi Hernandez in an attempt to salvage the match and Barca’s title challenge.
A Gabriel own goal gave Barca a lifeline with just under half an hour to play, the centre-back’s deflection beating Asenjo after he had been wrong-footed by an earlier touch from Bojan Jokic on Dani Alves’ cross.
The anticipated Barca onslaught upon halving the deficit never really came but Barca drew level anyway thanks to a second error from the Villarreal defence. Musacchio got the final touch on a Tello cross and gave Asenjo no chance.
Asenjo somehow kept out a Messi free-kick shortly after the second own goal but had even less chance than from the own goals when Messi hammered home from Fabregas’ knock-down to complete the turnaround.
It appeared Villarreal had been awarded a penalty immediately after Messi’s goal but after a mass of protestations, the decision was changed to a free-kick on the edge of the area. Replays suggested that Busquets got a touch on the ball regardless.
There was no further incident in a frenetic second-half and Barca saw out the victory, having appeared out of the match and out of the title race after an hour.
Villarreal 2-3 Barcelona
Cani 45, Trigueros 55 (V) Gabriel og 66, Musacchio og 78, Messi 83 (FCB)
Villarreal: Asenjo; Mario, Musacchio, Gabriel, Jokic; Bruno, Pina (Aquino 35); Trigueros, Cani; Giovani (Uche 85), Perbet (Pereira 14)
Barcelona: Pinto; Alves, Bartra, Mascherano, Adriano; Xavi (Cesc 65), Busquets, Iniesta; Alexis (Tello 65), Messi, Pedro (Sergi 90)