Barcelona suffered a third home defeat in a row for the first time in a single season with a shock La Liga loss to Rayo Vallecano.
Barca's defeat leaves Real Madrid on the brink of the title, with Carlo Ancelotti's side needing one point from five games to become champions.
Madrid can clinch a record 35th Spanish title by avoiding defeat against Espanyol on Saturday.
Rayo earned a Liga double over Barca through Alvaro Garcia's sharp strike.
Following defeats by Eintracht Frankfurt in the Europa League quarter-finals and Cadiz in La Liga on Monday, Barca have lost three successive home games for only the second time in their history.
The other occasion came at the end of the 1997-98 season and start of the 1998-99 season under Dutch boss Louis van Gaal.
Barca, who knew victory would all but secure a top-four finish and Champions League qualification, have won just twice in their past six matches.
Xavi's side should still secure a top-four spot but his side's form will be a concern for the legendary Barca midfielder, who took over from Ronaldo Koeman in October.
Koeman was sacked after Barca lost at Rayo and the Madrid side became only the fourth promoted side to complete a home and away double over Barcelona and the first since 1997-98.
Garcia's movement allowed him to collect Isi Palazon's superb pass ahead of Barcelona defender Sergino Dest and beat home keeper Marc-Andre ter Stegen at his near post with a low shot.
Barcelona dominated possession as they searched for an equaliser, with Gavi hitting the crossbar with a rising shot in the first half.
The home side continued to press in the second half and, having thrown on attackers Memphis Depay, Luuk de Jong and Adama Traore, created opportunities against a well-organised Rayo side.
But Barca paid the price for their profligacy.
Rayo keeper Stole Dimitrievski made several comfortable saves, while defender Alejandro Catena cleared a Dembele shot off the line, as Barca could not find a way through despite almost 14 minutes of stoppage time.