Leaders Barcelona require five points from their last five games to wrap up the La Liga title after substitute Jordi Alba struck an 85th-minute winner against 10-man Osasuna at the Nou Camp.
The mid-table visitors had Jorge Herrando sent off less than half an hour into his debut for a professional foul on Pedri – the seventh red card for the club in La Liga this season.
But Osasuna stayed organised and frustrated their opponents until Alba’s winner with the outside of his foot.
Barcelona dominated possession even before Herrando’s dismissal, with Osasuna making nine changes before their appearance in the Copa del Rey final against Real Madrid in Seville on Saturday (kick-off 21:00 BST).
Pedri, Ronald Araujo and substitute Ousmane Dembele all wasted chances, Raphinha went close with a free-kick, while Frenkie de Jong and Ansu Fati forced good saves from Aitor Fernandez.
But Osasuna were hard-working and went close themselves through Lucas Torro and Iker Munoz.
Barca, who had 15-year-old winger Lamine Yamal as an unused substitute, had a 79th-minute goal by Robert Lewandowski ruled out for offside before Alba’s late winner left the home fans in the 76,061 crowd celebrating.