Madrid: Jordi Alba scored an extraordinary volley and Dani Alves was sent off as Barcelona delivered a major boost to their hopes of finishing in La Liga's top four on Sunday by winning a six-goal thriller against Atletico Madrid 4-2.
Real Madrid then capitalised on Sevilla's goalless draw with Osasuna on Saturday by edging past Granada 1-0 to extend their lead at the top of the table to a daunting six points.
In the absence of the injured Karim Benzema, Marco Asensio finally broke Granada's resistance in the 74th minute at the Santiago Bernabeu.
Barcelona were more emphatic as they scored four in 40 minutes at Camp Nou before surviving a late fightback from Atletico after Luis Suarez headed in and Alves saw red with 20 minutes left.
A statement victory returns Xavi Hernandez's side into the top four for the first time since September, with Atletico now two points behind in fifth.
"The team, the fans and the club in general needed a win like this," said Xavi. "It could be a turning point, we can't hold back now."
Atletico coach Diego Simeone said: "If we took advantage of our opportunities everyone would be saying how good our counter-attack was. Their effectiveness has prevailed today."
Atletico took an early lead through Yannick Carrasco but Barcelona came storming back, Alba equalising with surely one of the goals of the season before Gavi, Ronald Araujo and Alves all struck to leave Simeone's side facing an annihilation.
Instead, Suarez headed in and Alves was sent off as tempers flared. But Barcelona held on, with Pierre-Emerick Aubameyang, signed from Arsenal, coming on off the bench to make his debut in the second half.
With Barcelona in containment mode, Aubameyang's influence was limited and it was another January signing, Adama Traore, who made the biggest impact with an electric first-half performance.
Barca were ninth in the league, six points behind Atletico in fourth, when Xavi was appointed coach.
Aubameyang was only deemed fit enough for the bench, where he sat along with Ousmane Dembele, who Xavi welcomed back into the fold despite his ongoing stand-off with the club over a new contract.
Dembele was whistled before kick-off and not brought on in the second half.
"I was going to bring him on but the situation changed after the red card," Xavi said.
Atletico were ahead on eight minutes but the rest of the first half belonged to Barca.
Traore was at the heart of it, making the game his own for a whirlwind half an hour.
He was involved in Alba's equaliser, his cross poked out to Alves, who floated the ball to the opposite side, where Alba had time to adjust his feet and let fly with a stunning volley into the top corner.
Barcelona were on top and Traore in full flow. He stopped Mario Hermoso, then surged past him, lifting a cross off the line and into the area where Gavi headed in a second.
Araujo smashed in before half-time and Alves added a fourth four minutes after, arrowing in Gavi's cut-back before posing with his arms outstretched towards the fans.
The party atmosphere fizzled slightly when Suarez reduced the gap to two by heading in from close range against his former club.
Aubameyang briefly broke the tension by coming on to rapturous applause for Traore but Alves was then sent off after scraping his studs down the back of Carrasco's leg.
Atletico had 20 minutes to score two and the game almost boiled over when Xavi's assistant Oscar Hernandez was shown a red card for his protests and Xavi took a yellow. Barcelona held on.
Granada looked like they might hold on against Real Madrid, who were without their deadly attacking duo, Vinicius Junior suspended and Benzema still recovering from a thigh strain.
Isco and Rodrygo started up front instead but were replaced by Luka Jovic and Eden Hazard shortly before Asensio struck, a superb, swerving shot finding the corner after Eder Militao had won the ball back.