Barca hand rivals initiative
A review of the weekend's action so far in Spain's La Liga as Barcelona suffer a surprise defeat to Valencia.
- Related Content
The Catalans' misery was compounded by a sending-off for Jordi Alba as they lost for the first time at home this season.
The hosts remained top of the league on goal difference, but are likely to drop back on Sunday when both Madrid clubs are in action. Should Real and Atletico both win, Barcelona will fall to third place.
Barcelona started well as Alexis Sanchez gave them the lead in the seventh minute, but Gerardo Martino's faltering side released their early grip and went behind to goals from Dani Parejo and Pablo Piatti either side of half-time.
Lionel Messi equalised from the penalty spot, but Paco Alcacer scored the visitors' third goal on 59 minutes and this time Barcelona had no answer.
Rayo Vallecano avoided defeat for the first time in three league games by drawing 0-0 at Levante, but remained in deep trouble in the relegation zone.
This was an evenly matched game at the Ciutat de Valencia stadium which saw few openings until a frantic final 10 minutes, but neither team were able to take any of their chances.
Rayo are now four points from safety, but could see the gap between themselves and 17th-placed Elche widen to seven points should Fran Escriba's side beat Almeria on Sunday.
Levante dropped to ninth, level on points with local rivals Valencia.
Duda scored twice as Malaga came from behind after throwing away the lead to win 3-2 at home to Sevilla.
The Portuguese playmaker opened the scoring in the first half and then grabbed the winner seven minutes from time to move Malaga clear of the relegation zone.
Sevilla looked to have turned the match around in the second half as goals from Carlos Bacca and Federico Fazio put them in front, but the game turned for a second time.
Samu made it 2-2 in the 77th minute before Duda had the final say as Sevilla's European hopes took a hit at the hands of their Andalusian rivals.
Getafe were the width of a post away from earning a much-needed win against Real Valladolid had to settle for the draw which hardly helps either side.
Six defeats and a draw in their last seven competitive matches had seen Getafe tumble down the Primera Division standings and crash out of the Copa del Rey, but that dismal winless run looked set to come to an end as Diego Castro's thunderous second-half stoppage-time strike arrowed towards the top corner.
However, the 25-yard effort crashed against the post and stayed out, and soon afterwards the full-time whistle went to leave Getafe and Valladolid - who had also struck the woodwork early on - still in trouble near the foot of the standings following a goalless draw.
On Friday night, Augusto Fernandez struck a late winner as Celta Vigo continued their recent revival with a 2-1 win at Granada.
Gustavo Cabral's 28th-minute opener for Celta was cancelled out by Youssef El Arabi just before the break but the visitors would not be denied as Fernandez netted the decider two minutes from time.
That gave Celta a third win in four league matches this month, lifting them up to 11th place on 25 points - one place and one point above Granada, who have now lost four of their last six.