Lionel Messi scored a brilliant volley but Barcelona's title hopes could be over, with a 3-3 draw away at Levante on Tuesday giving Real Madrid and Atletico Madrid the chance to pull away at the top of La Liga.
Another slip could prove decisive given Atletico will move four points clear of Barca with two games left if they can win away at Real Sociedad on Wednesday. Real Madrid will edge two points ahead of Ronald Koeman's side if they win away on Thursday at Granada.
There are certainly no guarantees in what has been a frenetic and thrilling title race in recent weeks, with all of Spain's four contenders stumbling down the final stretch.
But with only two games left now and potentially two teams to catch, Barcelona's chances of taking the title off Real Madrid this season would appear remote.
"We were always depending on other results but the objective was to win our three games and hope others dropped points," said Koeman. "Now it's very complicated."
Levante sit 14th in the table and had won only one of their previous eight matches but they had also prevailed in three of their last four games at home against Barca, and they turned it on again.
Barcelona led 2-0 from Messi's acrobatic strike and a simple Pedri finish but two goals in two minutes before the hour suddenly had Levante level, Gonzalo Melero and Jose Luis Morales giving Levante hope.
Ousmane Dembele pulled the visitors ahead again but again they squandered the advantage, Sergio Leon diverting in at the near post and this time there was no way back.
"We lowered our intensity from the start of the second half, lost our rhythm," said Koeman. "We weren't defensively attentive and we let Levante back in. There is no other explanation."
"Our chances are slim," added Sergio Busquets. "And that's our fault - our decisions, our concentration - we give away easy goals."
Koeman has made positive strides this season but his team's lapses of concentration and fragility in defence remain.
Questions around the Dutchman's future will grow louder the more the club's title chances fade, his decisions this time to start Dembele at right wing-back and to bring Sergi Roberto into the back three particularly vulnerable to scrutiny.
"Coaches will always be questioned, that isn't going to change but with that second half there will be questions asked and I understand that perfectly," said Koeman.
Barcelona had scored twice in nine minutes to take control, Jordi Alba's cross grazing the head of Miramon on its way to Messi, who adjusted his body and threw his left foot over the ball, volleying it into the bottom corner for his 37th goal of the season.
Messi instigated the second too, freeing the sprinting Dembele down the right, who powered past Oscar Duarte and prodded back just in time for Pedri to finish.
Barca were in charge but Levante always looked a threat on the break and made it pay with two goals in two minutes before the hour.
First, Melero nipped in front of Sergi Roberto to head in and then a sloppy Messi touch allowed Morales to bounce the ball off Roger Marti, before volleying brilliantly into the far corner.
Parity lasted only five minutes, though, as Barcelona came again.
Messi on the turn was able to slide a pass into Antoine Griezmann and while he was challenged, the ball spilled right to Dembele, who took a touch and lashed into the top corner.
Barca were ahead again but they always looked vulnerable and with seven minutes left, Levante struck.
Sergino Dest was put on the floor by Tono down the left and his cross was turned in by Sergio Leon, who beat Gerard Pique at the near post. Barca had no answer.