Barcelona missed a glorious chance to close in on the Spanish league title after falling to a shock 2-1 defeat at Real Sociedad on Saturday as their 32-match unbeaten league run came to an end.
Pep Guardiola's side could have moved to within one point of a third successive league crown with victory after rivals Real Madrid suffered a surprise 3-2 home loss to Real Zaragoza earlier in the day.
Instead, the champions now need four points from their final four games to retain the title.
"We have to learn from games like this although it is shame that (Gaby) Milito had a goal ruled out that was legal," said Barcelona defender Dani Alves. "Now we have to focus on the Champions League."
Barcelona took the lead through Thiago Alcantra on 29 minutes, but Uruguayan substitute Diego Ifran equalised on 71 minutes and Xabi Prieto converted an 82nd-minute penalty to give strugglers Sociedad a vital win.
It was Barcelona's first away defeat of the season and their first in the league since mid-September, although they retain their eight-point cushion over Real at the summit.
Real coach Jose Mourinho saw his week go from bad to worse as Madrid fell to strugglers Zaragoza, three days after their 2-0 Champions League semi final first leg loss to Barcelona.
Mourinho had gone nine years without losing a home league match, but this was his second home league loss inside a month following the 1-0 defeat by Sporting Gijon at the beginning of April.
"I am the only one to blame for this defeat because as a coach I wasn't capable of motivating the team in the first half," said Mourinho.
Guardiola resisted the temptation to rest all of his stars ahead of the Champions League semi final second leg against Real at Camp Nou on Wednesday, fielding Lionel Messi, Xavi and Gerard Pique.
Youngsters Martin Montoya, 20, and Andreu Fontas, 21, were given a chance to shine along with 21-year-old Thiago, all three of whom are products of Barca's fabled youth system.
Messi went close early on, shooting just wide, before Dutch winger Ibrahim Afellay had a drive well saved in the fifth minute.
The breakthrough came in the 28th minute, with Thiago latching on to a Xavi pass before scooping the ball over the advancing goalkeeper.
Uruguayan striker Ifran, who had only been on the pitch a matter of minutes, took advantage of a slip-up at the back to dink the ball over Jose Pinto for the equaliser.
Six minutes later Gaby Milito thought he had scored for Barcelona but his header was ruled out for offside.
Argentine Javier Macherano then conceded a spot-kick on 82 minutes and Prieto was fortunate to see his penalty scrape past Jose Manuel Pinto, who almost kept out the effort down the middle.
Still reeling from their Champions League loss to Barcelona, Real suffered another setback at the Santiago Bernabeu.
A brace from Angel Lafita, the first due to a rare howler from goalkeeper Iker Casillas, and a penalty from Gabriel Arenas helped down Madrid, who were reduced to 10 men late on with Ricardo Carvalho sent off for two yellow cards.
"We can practically say goodbye to the miracle of trying to win the league," said Madrid captain Casillas.
"Everything was more complicated because of my mistake but we are all human and make mistakes.
"Now we have to go to Barcelona to try and win. We trail by two goals but anything can happen and we will go with the hope of playing the Champions League final in a month's time."
Sergio Ramos (62 minutes) and Karim Benzema (85) pulled goals back for the hosts, but Zaragoza held on to move four points clear of the relegation zone.
In other matches, in-form Argentine striker Sergio "Kun" Aguero scored his ninth league goal in his last seven outings as Atletico Madrid won 1-0 at 10-man Deportivo La Coruna to move up to fifth.
Deportivo were reduced to 10 men when defender Alberto Lopo was sent off on the hour mark and Aguero struck an 80th minute winner as Atletico moved a point above Athletic Bilbao into fifth.