Atletico Madrid lost 3-0 at Real Sociedad on Thursday, leaving Barcelona one victory away from clinching the Spanish league title.
Barcelona, which drew 2-2 at Celta Vigo on Tuesday without most of its regular starters, can secure its 25th crown at Deportivo La Coruna on April 29.
The Catalan club faces Sevilla in the Copa del Rey final on Saturday.
Barcelona has a 12-point lead over Atletico, with five matches left, and is 15 in front of third-place Real Madrid, which needed a late goal by Cristiano Ronaldo to draw 1-1 with Athletic Bilbao on Wednesday.
Another loss for Atletico on Sunday against Real Betis would leave Diego Simeone's team out of contention for the title because Barcelona holds the head-to-head advantage between the clubs.
"Sociedad deserved the victory," Simeone said. "They played a very good match."
Willian Jose put Sociedad ahead in the 27th minute at the Anoeta Stadium. Juanmi Jimenez made it 2-0 in the 80th after a perfect backheel from Jose before Jimenez scored again with an injury-time header.
"We played very well against one of the best teams right now," Sociedad coach Imanol Alguacil said. "We are very happy with how things turned out for us."
It was a third straight win for Sociedad, which stayed 11th in the standings. Atletico hadn't lost in three consecutive league matches.
Emmanuel Boateng scored in the third minute of stoppage time to give Levante a 1-0 win against Malaga, relegating the bottom club to the second tier for the first time in 10 seasons.
The result left Malaga 17 points behind 17th-place Levante, the first team outside the drop zone. Levante is seven points ahead of 18th-place Deportivo La Coruna.
Real Betis defeated second from bottom Las Palmas 1-0, with a goal by Junior Firpo in the final minute of stoppage time keeping alive its slim hopes of making the Champions League next season.
Fifth-place Betis moved within 10 points of Valencia, which is fourth, with a sixth straight league win, a feat it hasn't achieved in nearly 60 years.
Relegation is almost certain for Las Palmas as it is 13 points behind Levante.
Girona ended a four-match winless streak with a 2-1 victory at Alaves, staying in contention for a Europa League spot next season.
Aleix Garcia opened the scoring for Girona in the 59th minute and Cristhian Stuani added a penalty in the 86th, moving the team within one point of seventh-place Sevilla.
Tomas Pina struck in the 90th minute for Alaves, which is 15th.