Cristiano Ronaldo and Gareth Bale both scored as Real Madrid staged a remarkable late comeback from two goals down to win 3-2 at Villarreal and stay top of La Liga on Sunday.
Substitute Alvaro Morata got the winner in the 83rd minute to cap a 19-minute turnaround that keeps Zinedine Zidane's side on course for their first La Liga triumph since 2012 after Barca's talisman Lionel Messi had briefly sent his side top with a late strike in the 2-1 victory at Atletico Madrid.
Real lead on 55 points, one ahead of Barcelona and three clear of Sevilla. Real also have a game in hand on both of their title rivals.
The first half was a lively affair which saw plenty of chances for both sides but all the goals came after the break.
Villarreal's Manu Trigueros lashed home from inside the area to put the hosts ahead on 50 minutes and Cedric Bakambu doubled the lead in the 57th with a fine finish past Keylor Navas, though he was fortunate not to be ruled offside.
Real looked destined for a second loss in a week on the east coast after Wednesday's 2-1 reverse at Valencia but Bale, making his first start since November, headed a goal back in the 64th before Ronaldo levelled with a controversial penalty 10 minutes later after Villarreal captain Bruno Soriano handled following a ricochet in the area.
"You can clearly see that I couldn't have done anything, the ball bounced up towards my arm
Villarreal coach Fran Escriba and substitute Roberto Soldado were both sent off from the dugout for protesting the decision.
Morata then headed Marcelo's cross under Villarreal's substitute goalkeeper Andres Fernandez, who had replaced Sergio Asenjo after the first-choice stopper sustained a knee injury saving from Karim Benzema.
"We refused to give in, we had a lot of pressure on us and thanks to everyone we fought and in the end we won," said Real defender Marcelo.
In Madrid, Messi came to Barcelona's rescue for the second time in a week by snatching a winner in the 86th minute to give his side a barely deserved 2-1 win at Atletico.
Rafinha had put Luis Enrique's side ahead against the run of play with a scrappy finish in the 63rd minute but Godin nodded in Koke's free kick to level in the 70th.
For much of the game, Barca looked to be suffering a lack of confidence from their 4-0 thrashing at Paris St Germain in the Champions League. They made a timid start and had goalkeeper Marc-Andre Ter Stegen to thank for impressive saves in either half.
It took a scrappy strike from Rafinha to break the deadlock, the Brazilian firing into the far corner when the ball bounced fortuitously towards him, while Messi also benefited from a lucky ricochet to settle the game, adding to the late winner he had scored against Leganes the week before.
"I think we played a perfect game but they had two rebounds and they took advantage of them and leave here with the three points," said Atletico captain Gabi.
Barca coach Luis Enrique added: "It was a very hard-fought victory, we struggled in the first half because of their pressure and the conditions of the pitch but we scored at the end and that will give the players a huge morale boost."