A late goal from Sergio Leon meant Barca could only climb above Real Madrid into second, a point behind leaders Atletico Madrid, with two matches left to play.
Both Madrid sides will play their game in hand over the next couple of days.
Lionel Messi had earlier struck his 29th goal of the season with a volley to keep him at the top of the goalscoring chart.
Barca doubled their lead in the 34th minute after Ousmane Dembele raced to the byline and pulled the ball back for Pedri to slide into an empty net.
But Barcelona were stunned when Levante scored twice in three minutes to haul themselves level through Gonzalo Melero and Jose Morales.
Dembele struck with a fierce drive in the 64th minute to put Barca back in front.
But Leon left Barca on their knees when he turned in a cross from Tono with seven minutes remaining.
Atletico host Real Sociedad on Wednesday and Real travel to Granada 24 hours later.
Ante Budimir scored twice as Osasuna beat Cadiz 3-2.
Budimir headed in a cross from Manu Sanchez seven minutes before half-time to give Osasuna the lead.
Ivan Saponjic brought Cadiz level when he converted a penalty early in the second half after David García brought down Jon Ander Garrido.
But Budimir struck again and Roberto Torres added a third from the spot before Alberto Perea Correoso pulled one back in stoppage time.
Goals either side of half-time from Joselu and Luis Rioja deepened Elche's relegation worries as they went down 2-0 at home to Alaves.
In Serie A, Piotr Zielinski, Fabian Ruiz, Hirving Lozano, Giovanni Di Lorenzo and Lorenzo Insigne were on target as Napoli boosted their European hopes with a 5-1 win over Udinese, Stefano Okaka pulling one back for the visitors.