Antoine Griezmann scored twice as Barcelona drew level on points with second-placed Real Madrid by beating Villarreal in an incident-packed game.
Villarreal took the lead through Samuel Chukwueze's composed finish before Griezmann equalised moments later with a quality finish.
The France forward then pounced on a poor back pass by Juan Foyth, on loan from Tottenham, to put Barca ahead.
Villarreal's Manu Trigueros was sent off for a foul on Lionel Messi.
The result put Barcelona two points behind leaders Atletico Madrid, who are away to Athletic Bilbao in the late game on Sunday (20:00 BST).
Ronald Koeman's side, who were 12 points off the top earlier in the season, have one game in hand on Real Madrid.
One of Barca's remaining six league games is at home to Atletico on 8 May.
Latest Stories
-
Will Ghana’s democracy stand the test of time in the 2024 elections?
3 hours -
Hindsight: Dreams fairytale run proved one thing; it is possible
4 hours -
God makes rulers, not you; you can’t choose your successor – Mahama to Akufo-Addo
5 hours -
Contributors own SSNIT, they must decide who becomes its Director-General – Austin Gamey
6 hours -
Move away from theory-based learning towards practical learning approaches – AUCC President to students
6 hours -
Haaland scores as Manchester City beat Nottingham Forest
7 hours -
Villas-Boas elected Porto president
7 hours -
Situation on frontline has worsened, Ukraine army chief says
7 hours -
US doctor describes witnessing starvation in northern Gaza
7 hours -
CAFCC: RS Berkane make final after USM Alger refused to play 2nd leg over Moroccans’ jersey
7 hours -
Elon Musk in China to discuss enabling full self driving
7 hours -
PSG clinch Ligue 1 title after Lyon’s win over Monaco
10 hours -
Guinness Ghana sets the pace at Ghana Beverage Awards with six awards
10 hours -
Burkina Faso suspends BBC, VOA radio broadcasts over killings coverage
10 hours -
Nicole Kidman honoured with AFI Life Achievement Award
10 hours