Madrid (AFP) - Barcelona suffered a second consecutive La Liga defeat to blow the title race wide open as Mikel Oyarzabal's header handed Real Sociedad a 1-0 win over the European champions on Saturday.
Atletico Madrid are now only three points behind Barca after goals from the on-form Fernando Torres, Antoine Griezmann and Koke saw them come from behind to win 3-1 at Espanyol.
Cristiano Ronaldo also kept Real Madrid in the hunt a further point back in third with a goal and two assists in a 4-0 rout of Eibar.
Barca still need to drop points in two of their last six games thanks to their better head-to-head record with Atletico.
However, the pressure is now firmly on the Catalans after tasting defeat for the second time in a week after seeing a 39-game unbeaten run snapped by Real Madrid last weekend.
Barcelona have now not won in their last seven visits to Sociedad and lost each of their last four league meetings in San Sebastian.
Just as in last season's 1-0 win under the tutelage of David Moyes, Sociedad made the perfect start as 18-year-old Oyarzabal soared to power home Xabi Prieto's cross into the far corner.
Barca were without the suspended Luis Suarez and badly missed the 45-goal Uruguayan's presence as they struggled to create clear-cut chances.
Luis Enrique had rested Andres Iniesta, Ivan Rakitic and Jordi Alba with one eye on the second leg of their Champions League quarter-final at Atletico on Wednesday.
However, all three were called upon as Barca chased the game after the break and Geronimo Rulli had to produce a brilliant save to prevent Iniesta's left-footed drive finding the top corner.
Rulli came to Sociedad's rescue once more to deny Messi his 500th career goal from close range moments later.
And Rulli saved from Messi and Iniesta once more late on to seal a three points celebrated as wildly in Madrid as by the home fans at Anoeta.
Real Madrid bounced back from their Champions League embarrassment against Wolfsburg in midweek despite coach Zinedine Zidane making eight changes as they look to overturn a 2-0 deficit against the Germans at the Santiago Bernabeu on Tuesday.
"I'm happy with the way we played, more in the first half than the second," said Zidane.
"We know what awaits us and what we are playing for on Tuesday. Now we just have to rest and prepare well." Despite the changes, the hosts were always comfortable against the Basque minnows from the moment Rodriguez smashed home a sumptuous free-kick after just five minutes.
Ronaldo showed he was in a generous mood on 18 minutes when he unselfishly squared for Vazquez to turn home the second.
A typically clinical Madrid counter-attack followed just two minutes later as Jese bore down on goal before teeing up Ronaldo to smash home his 30th La Liga goal of the season and extend his lead to four over Suarez in the battle to be the league's top scorer.
The roles were reversed for the fourth just before the break as this time Ronaldo picked out Jese's unmarked run to the far post to leave the Spanish under-21 international with the simplest of finishes.
In contrast to Enrique and Zidane, Atletico boss Diego Simeone named his strongest available side and was rewarded with a vital win as his side stormed back from Pape Diop's opener for Espanyol.
"We are giving it everything we have. We are intense, persistent and we keep fighting," said Simeone.
Torres latched onto Koke's through ball before firing low into the net for this third goal in as many games to equalise 10 minutes before the break.
Griezmann completed the comeback when he drilled another Koke assist in off the far post just before the hour mark for his 20th La Liga goal of the season.
Atletico then had a series of chances to kill the game on the counter-attack, but had to wait until two minutes from time for their third when Koke stooped to head home Torres's cross.