Rayo Vallecano stunned impotent La Liga leaders Barcelona on Wednesday with a 2-1 win, outplaying the Catalans at a rowdy Vallecas.

Alvaro Garcia and Fran Garcia struck to earn the hosts a memorable victory, with Robert Lewandowski pulling one back late on for Barca.

Xavi Hernandez's side remain 11 points clear of second-placed Real Madrid with seven matches remaining.

After champions Madrid lost at Girona on Tuesday their hopes of defending the title are virtually over, despite Barcelona following suit with a deserved defeat in the capital.

Xavi's side have won just one of their last four league matches -- a narrow triumph over Atletico Madrid on Sunday -- as they limp towards the finish line and a first title since 2019.

Barcelona's coach urged his players to be wary of Rayo's threat before the game, but they did not heed his warning. The Catalans have not beaten the Madrid club in their last four league meetings.

Xavi was without suspended captain Sergio Busquets but handed Pedri his first start since he was injured in February.

Frenkie de Jong started as the lone defensive midfielder and endured a torrid night, although the same was true for most of his team-mates too.

Sergio Camello might have put Rayo in front early on after a Pedri mistake, but Marc-Andre ter Stegen made a good save to deny the on-loan Atletico forward.

However Rayo soon did break the deadlock when Camello darted infield and fed Alvaro Garcia, who produced an early, drilled strike which flashed across Ter Stegen and into the bottom corner.

Jules Kounde, playing at right-back as he has done for most of the season, did not get close enough to shut the forward down.

Lewandowski should have equalised for Barcelona after good work by Gavi and then Raphinha to set him up, but Rayo goalkeeper Stole Dimitrievski denied the forward one-on-one.

Lewandowski did find the net shortly before half-time but it was ruled out by VAR for offside.

Rayo doubled their lead soon after the break when left-back Fran Garcia, who will join Real Madrid in the summer, pressed De Jong and won the ball back in dangerous territory.

The defender smashed a low strike past Ter Stegen to make Rayo the only side to score more than one against Barcelona in La Liga this season, aside from Madrid.

Camello could have added a third but fired across the face of goal, before Lewandowski pulled one back for Barcelona after Franck Kessie's shot was blocked.

It ended a run of four matches without a goal for the striker, the division's top scorer with 18, four ahead of Real Madrid's Karim Benzema.

Despite Barcelona finally showing some urgency in the final stages Rayo held on for only their second win in their last 11 league matches, with Andoni Iraola's side ninth.