Ten-man Barcelona saw their lead at the top of La Liga cut to seven points as they were shocked by city rivals Espanyol while Real Madrid ran riot against Real Betis.
Barca's lead stood at 12 points before last weekend's 2-2 draw against Betis, but that has been nearly halved after Espanyol ran out surprise 2-1 winners at the Nou Camp on Saturday.
Former Barca player Ivan De La Pena did the damage with goals in the 50th and 54th minutes after Seydou Keita was sent off seven minutes before the break.
Yaya Toure puled one back two minutes after the hour mark, but there was no comeback from the leaders this time.
There were no such problems for Madrid, who crushed Betis 6-1 at the Bernabeu, all seven goals coming in the first half.
Captain Raul and Klaas Jan Huntelaar both netting braces for Madrid to add to further efforts from team-mates Gonzalo Higuain and Sergio Ramos.
Ricardo Oliveira had pulled a goal back for Betis, but it was nowhere near enough to deny rampant Madrid a ninth successive league win under new coach Juande Ramos.
Sevilla maintained their push for a Champions League place with a 1-0 win over Atletico Madrid.
The match seemed destined for a goalless draw until Jesus Navas struck three minutes from time for Sevilla, who remain nine points behind Madrid.
Villarreal climbed back into the top four for 24 hours at least after coming from behind to beat Sporting Gijon 2-1 at El Madrigal.
The Yellow Submarine got off to the worst possible start when Mate Bilic gave the visitors a shock lead inside the first minute but Giuseppe Rossi responded with an equaliser almost immediately.
Joan Capdevila struck what turned out to be the decisive goal shortly before half-time.
The result pushed Manuel Pellegrini's men back into the Champions League places for the first time in more than two months, climbing above local rivals Valencia ahead of their trip to Deportivo La Coruna.