Barcelona stayed in touch with LaLiga leaders Real Madrid with a hard-fought 1-0 win at Real Valladolid.
Arturo Vidal’s eighth goal of the season after 15 minutes sees Barcelona trail Real Madrid having played a game more.
Real have three games to play and remain favourites to wrap up a first domestic title since 2017 with Granada, Villarreal and Leganes left on their fixture list.
Vidal might have been the match-winner, but it was Lionel Messi who carved his name in LaLiga history once again.
Messi slipped the ball through to Vidal and he flashed home a low shot for the Argentinian to become the first player in the league to both score and assist 20 goals or more in the same LaLiga season.
Former Barcelona midfielder Xavi had been the last player to reach the figure of 20 assists in LaLiga during the 2008-09 season.
Barcelona dominated the first half and Antoine Griezmann and Messi had chances to double the lead, the latter’s deflected shot falling just wide of a post.
Valladolid improved after the break and Barcelona goalkeeper Marc-Andre ter Stegen made a fine diving save to deny Enes Unal’s close-range header.
Ter Stegen also parried Sandro Ramirez’s fierce shot and the hosts felt substitute Junior Firpo had handled in the box.
But Barcelona held on for the three points that keeps their slim title hopes alive.
Atletico Madrid boosted their bid to finish third with a 1-0 home victory over Real Betis.
Diego Costa came up with a 76th-minute winner after Atletico had defender Mario Hemoso sent off before the hour.
Celta Vigo remain in relegation trouble after letting an early lead slip to lose 2-1 at Osasuna.
Santi Mina converted Iago Aspas’ 11th-minute cross to hand the visitors the lead, but Enric Gallego equalised midway through the first half.
Mid-table Osasuna snatched victory in the final seconds as Jose Arnaiz’s header left Celta four points above the relegation zone.
Meanwhile, two controversial Cristiano Ronaldo penalties secured Juventus a 2-2 draw against Serie A title rivals Atalanta.
Atalanta’s confidence from 11 successive wins in all competitions was evident from the start and Duvan Zapata fired the visitors into a 16th-minute lead.
Substitute Ruslan Malinovskiy restored Atalanta’s lead 10 minutes from time with a fierce 16-yard shot.
But Luis Muriel unfortunately handled in the final minute and Ronaldo drove home his 28th league goal for Juventus to inch closer to a ninth successive league title.
The result leaves Juventus eight points clear of second-placed Lazio and nine ahead of Atalanta with six games remaining.
Lazio’s post-lockdown blues continued with a third straight defeat as mid-table Sassuolo won 2-1 at the Stadio Olimpico.
The hosts were on a 21-match unbeaten league run and one point behind Juventus when Serie A was suspended because of the coronavirus pandemic in March.
But it has been a different story since the restart and Lazio have now lost four of their last six games.
But Sassuolo levelled seven minutes after the restart when substitute Francesco Caputo set up Giacomo Raspadori’s first Serie A goal.
Caputo then headed home the winner in stoppage time as Sassuolo held on to eighth spot.
Fifth-placed Roma completed a comfortable 3-0 win at lowly Brescia.