Gareth Bale and Cristiano Ronaldo hauled Real Madrid back from 2-0 down to win 3-2 at Villarreal on Sunday and regain top spot in La Liga from Barcelona.
Earlier, Barca had momentarily usurped Real thanks to Lionel Messi's winner four minutes from time in a 2-1 victory at Atletico Madrid.
Real lead Barca by a point, but also have a game in hand on their title rivals.
"We showed character to turn the game around," said Real boss Zinedine Zidane.
"With everything that happened today it was vitally important to get the three points."
Bale was recalled to the starting line-up for the first time in three months after a long-term injury layoff and Real's shock 2-1 defeat to Valencia in midweek.
And the European champions looked set for a second straight defeat as Villarreal struck twice early in the second half.
Firstly, Manu Trigueros volleyed home Samu Castillejo's knockdown before Cedric Bakambu burst onto Bruno Soriano's through ball to slot past Keylor Navas.
Ronaldo almost replied immediately, but Madrid's luck looked out when his sweetly struck volley came back off the post.
However, Bale started Madrid's fightback as he rose highest to power home Dani Carvajal's cross 25 minutes from time.
Villarreal had enjoyed the better of the opening hour, but were swamped by wave upon wave of Real attack for the final 30 minutes.
The visitors needed a slice of luck, though, when Soriano was harshly adjudged to have handled inside his own area 15 minutes from time.
Ronaldo took responsibility from the spot to smash home the equaliser.
Villarreal had lost goalkeeper Sergio Asenjo midway through the first half to what looks like the fourth cruciate knee ligament injury of his career.
"Asenjo seems to have torn his ACL (anterior cruciate ligament) in his left knee. It's a real shame," said Villarreal coach Fran Escriba.
And his absence was to prove crucial for Real's winner seven minutes from time as substitute goalkeeper Andres Fernandez let Alvaro Morata's powerful header from Marcelo's cross squeeze under his body to complete a rousing Real fightback.
- Messi to rescue -
Under-fire Barcelona coach Luis Enrique thanked the "terrible" state of Atletico's pitch for Messi's winner at the Vicente Calderon.
Messi stabbed home at the second attempt after his first effort was blocked to register his 27th career goal against Atletico.
"It was a terrible pitch for passing the ball, but I think it favoured us for both the goals," said Enrique.
Rafinha's scrappy effort fired Barca into the lead just after the hour, but Atletico responded seven minutes later through Diego Godin.
Defeat leaves fourth-placed Atletico just one point clear of Real Sociedad in the battle for the final Champions League slot.
"We competed very well, but they showed their class in both areas," said Atletico coach Diego Simeone.
Following their Champions League thrashing at the hands of Paris Saint-Germain and struggles at home to Leganes last weekend, Enrique switched from the Catalans' habitual 4-3-3 to a 3-4-3 with Messi forced into an advanced midfield role.
The change in tactics did little to stem Barca's slump in form early on as Atletico dominated the opening half hour.
Atletico's best effort of the opening half came from long range, though, as Antoine Griezmann's driven effort on his weaker right foot forced a brilliant flying save from Marc-Andre ter Stegen.
Luis Suarez screwed horribly wide after being played in by Messi at the start of the second-half.
Then at the other end, ter Stegen made another excellent stop to deny Griezmann from a narrow angle.
The deadlock was eventually broken in scrappy fashion on 63 minutes as Rafinha profited from a loose ball inside the area to fire low into the far corner.
However, the lead lasted only seven minutes as Godin rose higher than a host of Barca defenders to flick home Koke's free-kick for the equaliser.
Yet, when Barca needed a potential season-defining goal, Messi again came up trumps with his 35th in as many games this season.
The five-time World Player of the Year's first effort from Suarez's cut-back was blocked, but he followed up to prod past the helpless Jan Oblak and move Barca top of the table for a few hours.