Barcelona 1 - 2 Espanyol & Real Madrid 6 - 1 Betis Sévilla
Real scored all their goals in a terrific first half to record a ninth straight league win and they are brimming with confidence for Wednesday's last 16 Champions League match with Liverpool in Madrid.
Barca travel to Lyon on Tuesday for their European clash and will be kicking themselves after the loss to Espanyol, who won at Camp Nou for the first time since 1982.
Old boy Ivan de la Pena, who came through the Barca ranks and played at the club from 1995 to 1998, scored twice to gun down his old club, who had Seydou Keita sent off after 37 minutes.
It was Barca's first defeat since the opening day of the season ending their 22-match unbeaten run and in just a fortnight Real have sliced their lead from 12 points to seven.
Gonzalo Higuain opened the Real scoring in the seventh minute with his 14th goal of the season before Klaas-Jan Huntelaar scored twice.
Liverpool needn't worry about Dutch forward Huntelaar scoring against them as UEFA rules forced Real to omit the 20-million-euro signing from Ajax from the Champions League squad with Lass Diarra grabbing the final place.
Captain Raul will be available though, and the veteran striker scored a quick-fire brace (36 min, 42) as Real led 6-1 at the interval.
Ricardo Oliviera, a nine-million-euro signing from Real Zaragoza, had pulled a goal back on the half hour mark for Betis and it was the first goal Real had conceded in five league matches.
Sergio Ramos completed the first half rout and there were no more goals in the second half as Real eased off to save energy for the Liverpool showdown.
Barca have been cruising for most of this season but have hit a rocky patch with the Betis draw followed up by defeat to Espanyol.
Thierry Henry spurned a great chance after 13 minutes heading over from close range after Lionel Messi's great cross.
It was a fast-paced match and on 37 minutes Keita was red-carded for a late tackle on Moises Hurtado giving Barca an uphill task.
Barcelona coach Pep Guardiola was furious about the decision while Keita looked stunned - probably expecting a yellow card rather than a red.
Five minutes into the second half it got worse for Barca when old boy de la Pena headed the visitors in front.
The 32-year-old then scored again five minutes later with a terrific chip to stun the home fans.
Yaya Toure gave Barca hope with a 62nd-minute strike but Espanyol held on to triumph in a heated game which produced ten yellow cards and one red.
For Espanyol it was a first victory since the beginning of November and they move off the foot of the table with Numancia taking their place.