Lionel Messi notched a 20th assist of the season to help a lacklustre Barcelona secure a 1-0 win away to Real Valladolid on Saturday, maintaining the pressure on La Liga leaders Real Madrid.
Chilean midfielder Arturo Vidal struck the only goal of the game in the 15th minute, firing into the net off the post after being played in by Messi, who now has 20 assists in the league to go with his 22 goals.
Yet Barca failed to build on their early advantage and were forced to grind out the victory in the second half as Valladolid took the game to them.
The win took second-placed Barca on to 79 points after 36 games, one behind Real Madrid who can restore their four-point advantage when they visit Granada on Monday.
Should Real beat Granada and follow that with victory at home to Villarreal on Thursday, they will be crowned champions for the first time since 2017.
Valladolid meanwhile are 14th on 39, seven above the relegation zone.
"It was a very difficult game against a team who know how to play well and did just that today. The hot conditions also complicated things for us but I'm pleased we won," said match-winner Vidal.
"We knew that we'd have to work very hard and wouldn't be able to maintain our pace throughout, we know we want to improve but we've kept ourselves in the title race that's the important thing."
Valladolid's Turkish forward Enes Unal forced Barca's goalkeeper Marc-Andre ter Stegen to stretch across goal and tip away his shot, moments after Kike Perez had missed the target from inside the area as the home side made a lively start after the break.
Ter Stegen was forced into action once again in added time to repel a shot from former Barca forward Sandro Ramirez as the visitors were left begging for the final whistle to arrive.
The scrappy victory followed Wednesday's narrow derby win over Espanyol and their mesmerising 4-1 thrashing over Villarreal last week feels like an anomaly in a downward trend of performances from Quique Setien's side.
Ronaldo's penalties salvage 2-2 draw for Juventus
Cristiano Ronaldo converted two penalties, both awarded for handballs and the second in the last minute, as Serie A leader Juventus twice hit back to draw 2-2 with Atalanta to move closer to a ninth successive Serie A title on Saturday.
The Portuguese forward took his league tally to 28 goals this season as Juventus went eight points clear of second-placed Lazio with six matches to play. Atalanta are a further point back in third after being denied a tenth successive league win.
Both handballs were clearly accidental but, under the current rules, referee Piero Giacomelli had no option but to award the penalties.
It was rough justice on Atalanta. The team, which leads Serie A in scoring, would have climbed into second place and cut the gap between themselves and Juventus to six points if they had won.
Juventus, humbled 4-2 at AC Milan on Tuesday, dropped Miralem Pjanic but were quickly forced onto the back foot by a typically audacious Atalanta side.
Duvan Zapata put the visitors ahead in the 16th minute as an intricate exchange of passes with Alejandro Gomez opened up the Juventus defence before the Colombian slotted his shot past Wojciech Szczesny.
The visitors continued to pen Juventus into their half, enjoying 58% possession and five shots to the home team's one before halftime, only to fall foul of the handball rule 10 minutes after the break.
Paulo Dybala fired a cross against Marten de Roon's elbow and, although it was at point-blank range and the Dutchman's arm was close to his chest, the referee immediately pointed to the penalty spot.
Ronaldo smashed home the spot kick, scoring for the sixth game in a row.
The game opened up, with Atalanta regaining the lead in the 81st minute when Luis Muriel sent a pass across the face of the penalty area to Ruslan Malinovskyi who took it in his stride before firing a right-foot shot past Szczesny.
But lightning struck a second time for Atalanta when Gonzalo Higuain got his foot to a corner and deflected the ball onto Muriel's hand.
The Colombian did not have time to get his hand out of the way but, as it was outstretched, the penalty had to be given and Ronaldo converted in the 90th minute.
Costa strike guarantees Atletico top-four finish
Atletico Madrid sealed Champions League qualification for the eighth consecutive season by beating Real Betis 1-0 at home on Saturday thanks to a late Diego Costa goal after having a player sent off and seeing two goals ruled out following VAR reviews.
Costa scored the only goal of the game with a scuffed header in the 74th minute, although Atletico had to wait several minutes for the referee to determine whether the ball had then hit his arm or shoulder on its way into the net.
The victory took third-placed Atletico on to 66 points after 36 games, nine ahead of fifth-placed Villarreal, and maintained coach Diego Simeone's run of reaching Europe's premier competition in each of his full campaigns in charge.
Betis, who had already ensured their top-flight status, are 13th on 42 points.
Angel Correa had seen a goal ruled out in the first half for a handball against Marcos Llorente, and Alvaro Morata had a strike ruled out for offside, while Betis had come close to scoring through Andres Guardado and Loren Moron.
The visitors were the better side for most of the second half and striker Loren should have scored when he skipped into the area unchallenged but saw his attempted dink past Jan Oblak trickle wide of the target.
Atletico defender Mario Hermoso was sent off in the 57th following a straight red card for a reckless tackle, and Betis continued to dominate but could not keep their composure in front of the goal.
Instead, Atletico pounced with their weapon of choice, a set piece, as Costa got on the end of Yannick Carrasco's lofted free kick into the area.
"We are lucky that I scuffed it because if I'd hit the ball cleanly it would have gone wide," Costa said.