Barcelona are but a win shy of their retention of the La Liga title after Lionel Messi, Luis Suarez and Neymar all scored as they thrashed Espanyol 5-0 in the Catalan derby on Sunday.
Real Madrid moved into second place, a point behind Barca with one game remaining, as they racked up an 11th straight La Liga win, 3-2 over Valencia, thanks to two goals from Cristiano Ronaldo.
However, Atletico Madrid’s title hopes are over as they lost 2-1 at already relegated Levante.
Barca will be champions with victory at Granada next weekend, who crucially are now mathematically safe from relegation after a 4-1 win at Sevilla.
Real Madrid travel to Deportivo la Coruna on the final day of the season.
Elsewhere, Sporting Gijon remain out of the relegation zone thanks to their superior head-to-head record with Getafe after the two drew 1-1.
Rayo Vallecano also remain in the bottom three after losing 2-1 at Real Sociedad.
Barca were out to avoid a repeat of their title collapse in 2007 when a last-minute equaliser from Espanyol at the Camp Nou on the penultimate day of the season handed Real the title.
The world club champions got off to a perfect start when Messi curled a delightful free-kick into the top corner.
Ivan Rakitic had a second ruled out for offside minutes later as Barca tried to kill the game off as early as possible.
However, they had to wait until seven minutes into the second half for the second as Messi teed up Suarez to fire high past Pau Lopez.
Suarez maintained his four-goal lead over Ronaldo as the league’s top scorer as he powered home his 56th goal of the season from Neymar’s corner.
A howler from Lopez handed Rafinha an open goal to tap home his first goal since suffering a serious knee injury at the start of the season, before Neymar rounded off the scoring.
Madrid shrugged off the absences of Gareth Bale and Luka Modric through injury to move above Atletico for the first time in 2016 with victory over Valencia.
Ronaldo missed a huge chance to open the scoring when he fired too close to Diego Alves, but the three-time World Player of the Year made amends with his next opportunity moments later when he fired into the far corner for his 48th goal of the season.
Valencia felt hard done by for Madrid’s second three minutes before half-time as the referee overruled his linesman, who had flagged Karim Benzema offside, before he slotted home as the ball through to the French striker deflected off Valencia defender Joao Cancelo.
The visitors’ bright start to the second period was rewarded when Rodrigo pounced on an error from Raphael Varane to halve the deficit.
Ronaldo quickly restored Real’s two-goal advantage, but Andre Gomes ensured a nervy finish when he smashed home from the edge of the box before Valencia were reduced to 10 men late on when Rodrigo was shown a straight red card.
Atletico paid for their exertions in setting up a second all-Madrid Champions League final against Bayern Munich in midweek, despite getting off to a brilliant start when Fernando Torres opened the scoring from Koke’s pass after two minutes.
Diego Simeone had left inspirational central defender Diego Godin and top scorer Antoine Griezmann on the bench and was made to pay when Victor Casadesus headed Levante level on the half hour mark.
Griezmann was introduced for the second half and came closest to finding a winner for Atletico when Diego Marino turned his near post effort wide 15 minutes from time.
But Giuseppe Rossi finished off a sweeping Levante counter-attack in the final minute to end Atletico’s hopes of an unlikely second title in three years.