Barcelona kept wasting its chances against 10-man Osasuna at Camp Nou.
Its top attackers all squandered good opportunities to break the deadlock, with Ansu Fati, Pedri, Ousmane Dembélé and Robert Lewandowski failing to find the target despite clear chances.
It took a veteran defender to come through and move the Catalan club a step closer to its first Spanish league title in four years.
Jordi Alba scored an 85th-minute winner not long after coming off the bench to give Barcelona a hard-fought 1-0 win against 10-man Osasuna on Tuesday.
The victory gave Barcelona a 14-point lead over second-place Real Madrid, which later lost 2-0 at Real Sociedad. The combination of results means that the Catalan club can clinch the title as early as next weekend.
“It was a very big step for us, but we suffered too much, wasted too many clear chances to score,” Barcelona coach Xavi said.
Both Madrid and Osasuna are focused on Saturday’s Copa del Rey final between the clubs in Seville. Madrid is also focused on the semifinals of the Champions League against Manchester City, with the first leg taking place in Madrid on May 9.
Osasuna coach Jagoba Arrasate rested several regular starters against Barcelona ahead of the club's first Copa final since 2005.
Barcelona last won the league in 2019 to cap a run that included eight league titles in 11 seasons. That was the team's last league trophy with Lionel Messi, who left in 2021 amid the club's financial struggles to join Paris Saint-Germain.
It was Barcelona's third straight win at home. It had gone through a tough stretch recently but victories against Atletico Madrid and Real Betis at Camp Nou helped it maintain its comfortable lead at the top.
Osasuna played a man down from the 26th after central defender Jorge Herrando, who was making his first-division debut, was shown a straight red card for pushing Pedri from behind to stop a breakaway. The ensuing free kick taken by Raphinha glanced off the crossbar.
Pedri had nearly scored from close range before the red card, but Barcelona wasn't able to create many more significant chances in the first half after going a man up, finishing with no attempts on target going into the break.
Frenkie de Jong, Fati, Dembélé and Lewandowski all came close in the second half before the 34-year-old Alba finally broke the deadlock with a low shot with the outside of his left foot after a set up by De Jong inside the area. Alba had entered the match less than 10 minutes earlier.
It was the 25th clean sheet in the league for Barcelona, which had lost playmaker Gavi in the 36th with an apparent muscle injury. He was replaced by Fati.
Osasuna had won three of its last five league matches but was coming off a home loss against Sociedad.
Sociedad later hosts Madrid hoping to strengthen its hold on fourth place and the final Champions League place. It has a five-point gap to fifth-place Villarreal, which visits relegation-threatened Valencia on Wednesday.
Madrid falls
Former Madrid player Takefusa Kubo scored in the 47th and Ander Barrenetxea added another goal in the 85th as Sociedad gave Madrid its second loss in three league rounds and strengthened its hold on the final Champions League place.
Madrid played a man down from the 61st after defender Dani Carvajal was sent off for a foul. The defending champions were coming off a 4-2 win against Almeria but had lost 4-2 at Girona in the previous round.
It was the second straight win for fourth-place Sociedad, which is unbeaten in four consecutive games. It opened an eight-point gap to fifth-place Villarreal, which visits relegation-threatened Valencia on Wednesday.
Elche relegated
Last-place Elche became the first team relegated to the second division after a 2-1 loss at Almeria.
The result left the club with 16 points, 17 behind 17th-place Valencia, the first team outside the relegation zone.
Elche, with only three wins from 33 matches, hadn't played in the second division since 2019-20. It routed Rayo Vallecano 4-0 in the previous round to end a run of six consecutive losses.
Almeria, which had lost three of its last four matches, moved to 14th place, three points clear of the relegation zone.