Barcelona closed in on the La Liga title by thrashing local rivals Espanyol 5-0 on Sunday as Atletico Madrid dropped out of the race after losing 2-1 at Levante and Real Madrid beat Valencia 3-2.
Barca top the standings on 88 points, Real moved into second on 87 and Atletico have 85 with one game remaining.
Barca went ahead in the eighth minute when Lionel Messi curled a 22-metre free kick into the top corner with a magnificent finish.
Luis Suarez stretched the hosts' lead with two goals in the second half before Rafinha and Neymar completed the rout.
Barca knew any slip-up could prove fatal to their title hopes, but Messi’s brilliant curled free kick got them off to an ideal start, although they were aggrieved when Ivan Rakitic had a goal harshly ruled out for offside and Messi had a strong penalty appeal turned down.
Messi laid on the pass for Suarez to smash in the second in the 52nd minute and the Uruguayan headed in a third to move on to 37 goals for the league season, one more than the entire Espanyol team.
Brazilian midfielder Rafinha pounced on an embarrassing error by goalkeeper Pau Lopez to score his first goal since returning from a serious knee injury.
Neymar added the fifth by tapping in Suarez’s low cross following a scooped pass from Dani Alves.
Barca will clinch the title next week if they win at Granada, who ensured their survival in the top flight on Sunday by thrashing Europa League and King's Cup finalists Sevilla 4-1 away from home.
“It was a very complete performance and the result and how we got it strengthens us,” Barca coach Luis Enrique said.
“Now we just need to finish the job in Granada and win a league title which I believe we fully deserve.”
The coach also rejected suggestions his side’s task would be made easier now Granada are no longer fighting to avoid the drop, pointing to Levante’s shock win over Champions League finalists Atletico.
“Look at Levante-Atletico, a relegated team beating one of the best teams in Europe,” he added.
“We’re not complacent at all and we’re going to try and achieve our objective via playing good football. We’ll have to do that to win a league which everyone has seen is very competitive.”
Atletico took the lead at Levante in the first minute through Fernando Torres, but the relegated home side fought back, equalising through Victor Casadesus before Giuseppe Rossi grabbed the winner in stoppage time.
After Atletico's late collapse, Real are the only team that can catch Barca.
Real were without goalkeeper Keylor Navas, defender Dani Carvajal, midfielder Luka Modric and winger Gareth Bale through injury, but went ahead thanks to a thunderous low finish from Cristiano Ronaldo in the 26th minute.
Karim Benzema scored the second before the break but Rodrigo Moreno, who was later sent off, pulled one back for Valencia after halftime.
Ronaldo added his second a few minutes later before Andre Gomes scored a sumptuous consolation goal for Valencia.
They visit Deportivo La Coruna next week after the Galicians won 2-0 at Villarreal to guarantee their survival in the top flight.
Elsewhere, struggling Rayo Vallecano lost 2-1 at Real Sociedad to drop down to 19th place in the table, and the Madrid outfit need to beat Levante next week and hope both Sporting Gijon and Getafe fail to win their respective games if they are to avoid the drop.
Getafe drew 1-1 with Sporting in a relegation six-pointer, Stefan Scepovic scoring an 80th minute equaliser after Sergio Alvarez had put Sporting ahead in the 50th.