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
-
Exempt health facilities from unplanned ‘dumsor’ – Minority to government
14 mins -
Eritrea Observed World Tuberculosis (TB) Day 2024
27 mins -
Just give us ‘dumsor’ timetable to plan our operations – GMA tells ECG
38 mins -
Parliament petitions Chief Justice for an expedited hearing of cases against anti-LGBTQI+ Bill
50 mins -
The Attorney General vs NDC impasse – why they ‘fight’
1 hour -
High Court orders teacher unions to end strike
1 hour -
‘He worked with all staff irrespective of their status’ – GRA hails Dr Ammishaddai
1 hour -
Zack Orji underwent two brain surgeries; he is fine – Actors Guild of Nigeria President
2 hours -
Another accident leaves 5 police officers injured in Nsawam
2 hours -
I’ve really worked well as Veep; vote for me as President – Bawumia to traders
2 hours -
There’s something mysteriously amiss somewhere about ongoing ‘dumsor’ – Gabby Otchere-Darko
2 hours -
South Africa: Team Western Cape wins National Primary School Track and Field Championships
2 hours -
Chale Wote Street Art Festival: A call for artists ahead of 2024 edition
4 hours -
Floods: We’re exposed but my team and I are ‘running’ to catch up – Oppong Nkrumah
4 hours -
5 traits of sweet, committed men that may seem like red flags at first
6 hours