Lionel Messi blew the title race wide open with a brace as Barcelona beat 10-man Real Madrid 3-2 at the Santiago Bernabeu on Sunday to reclaim top spot.
It was a pulsating encounter from start to finish, with Los Blancos taking the lead through Casemiro on 28 minutes, only for Messi to equalise five minutes later.
Ivan Rakitic put Luis Enrique's side ahead in the 73rd minute with a sweet strike and Sergio Ramos saw red four minutes later for a poor challenge on Messi.
James Rodriguez stepped off the bench to pull Real level with five minutes remaining, but Messi popped up at the death to score his 500th goal for Barca.
The hosts made a strong start and they wanted a penalty in the opening minute when Ronaldo was caught on the shin by Samuel Umtiti, but the referee waved the appeals away.
Ronaldo then tested Marc-Andre ter Stegen five minutes later as he received a pass from Karim Benzema on the right and cut inside before hitting a low shot at the keeper from 20 yards out.
Barca had been starved of possession in the opening 10 minutes, but they carved out their first opportunity in the 11th minute when Jordi Alba found Luis Suarez just outside the box and the Uruguayan flashed a shot wide of the left post from 20 yards out.
Both teams had a chance to break the deadlock on 18 minutes, as Benzema fired tamely at Ter Stegen from inside the area after being played in on the right by Luka Modric, before Suarez sliced a shot well wide of the right post moments later from Paco Alcacer's lay-off.
Los Blancos went on to enjoy a good spell of pressure around the midway point of the first half, with Ronaldo cutting inside from the left flank and forcing a sharp save out of Ter Stegen with a shot from inside the area on the left in the 20th minute.
Two minutes later Gareth Bale attempted to take Toni Kroos' long ball out of the air after breaking through on goal, but the Welshman failed to make proper contact and Ter Stegen cleaned up, while Ronaldo curled an effort well wide on 24 minutes after being picked out by Marcello just ouside the box.
Real drew first blood four minutes later as Marcello clipped a cross to the back post, where Sergio Ramos fired against the upright and rebounded to Casemiro, who slotted home in off the left post.
But the Blaugrana responded swiftly as Messi collected the ball from Ivan Rakitic ouside the area and ghosted past Daniel Carvajal before tucking his shot past Keylor Navas inside the right post on 33 minutes.
Ter Stegen pulled off a super save to his left to deny Modric from 25 yards out three minutes later, while Alba scuffed a volley wide at the back post from Suarez's cross on the right on 43 minutes.
Barca should have taken the lead in stoppage time, but Messi somehow missed the target at the back post after Navas failed to deal with a corner from the left.
Ter Stegen was called into action just three minutes into the second half as he tipped Kroos' first-time shot from 19 yards out around the post, before being tested again on 53 minutes by Benzema's header from Marcelo's cross.
Carvajal went close moments later as he steered a cross narrowly wide of the right post from close range, while Alcacer drew a save out of Navas soon afterwards having latched onto a pass from Rakitic inside the box.
After Messi fired a free-kick over, Gerard Pique forced Navas into a save with a header from Rakitic's cross on 59 minutes, as the action swept from end to end.
Ronaldo then had two chances in the space of a minute as he connected with Marco Asensio's cross to fire wide of the left post, before the Portuguese forward blasted over from inside the box following a counter-attack.
Navas kept out Suarez and Messi in quick succession, while at the other end Marco Asensio almost beat Ter Stegen at his near post on 72 minutes, the keeper just getting down to block the strike from a tight angle on the right.
But there was nothing Navas could do to prevent the Catalans from going in front a minute later as Rakitic picked up a loose ball outside the area and cut onto his left foot before curling a shot into the left corner of the net.
Real looked to respond, with Ronaldo shooting straight at Ter Stegen after being teed up by Benzema just outside the box on 75 minutes, but Ramos' red card two minutes later - for a two-footed challenge on Messi - handed Barca an even bigger advantage.
Pique nearly made them pay on 80 minutes as he forced Navas into a smart save from close range after being picked out by Andre Gomes, while the Real keeper was at his best to parry Messi's low strike away from danger three minutes later.
A final roll of the dice from Zinedine Zidane saw him bring on Rodriquez, who quickly got into the action with a deflected shot that was held by Ter Stegen, and the move paid off within two minutes as the Colombian steered Marcello's cross home from six yards out at the near post.
Los Blancos pushed for a winner and Asensio forced Ter Stegen kept into another fine save at his near post in the 89th minute. It proved crucial as Barca finally took advantage of the extra man in stoppage time to score a dramatic winner.
Gomes played in Alba on the left and the defender cut the ball back for Messi to steer a shot into the bottom-left corner from 14 yards out.
Sunday's other results:
Real Sociedad 1-0 Deportivo La Coruna
Celta Vigo 0-1 Real Betis
Las Palmas 1-1 Alaves
Antoine Griezmann's agent admits the €100 million release clause in the Atletico Madrid forward's contract means his future remains open to discussion.
The France international has been heavily linked with Manchester United after an impressive season for Los Colchoneros, while cross-town rivals Real Madrid are also monitoring his situation.
Griezmann netted his 16th goal of the campaign - and his 100th in La Liga - to secure a 1-0 win over Espanyol on Saturday, as Atleti cemented third place in the league standings.
The 26-year-old was annoyed to be quizzed about his future in the post-match interview, telling beIN SPORTS: "That's it I've already spoken. I do not want to talk any more."
But his representative, Eric Olhats, has revealed that the Frenchman will weigh up any "suitable" offers that come his way, with United having made the "first and the most solid" approach to date.
"There is an existing clause of €100m, which is unavoidable," Olhats told Telefoot.
"We're thinking right now about the most suitable offer. Real Madrid and other clubs are part of this thinking process.
"Antoine doesn't want to leave the club at any cost. That is false."
Sevilla president Pepe Castro has remained tight-lipped over speculation regarding head coach Jorge Sampaoli's long-term future at the club.
Sampaoli's reputation has skyrocketed in his debut season with the Spanish Primera League side - his first European job in management after leaving the Chile national team.
The Argentine's success with La Roja included the 2015 Copa America title and the South American Coach of the Year, before succeeding Unai Emery at Ramon Sanchez Pizjuan.
Despite Los Blanquirrojos' title challenge fading over the past two months and exiting the UEFA Champions League at the hands of Leicester City in the last-16, Sampaoli's style implemented at the club has been lauded by fellow managers and Spanish media.
Links with Barcelona have begun to intensify since the announcement of Luis Enrique's resignation at the end of the campaign, but according to Spanish newspaper AS, the 57-year-old has agreed in principal to take over as Argentina's next manager.
Castro refused to comment on the rumours, but Sampaoli touched on the subject after their 2-0 win over Granada on Friday evening.
"I know that there is an interest and I know that they say that I have been selected but it is important to wait until no-one will be harmed to make such statements," he told reporters. "Speaking if this now will still hurt Sevilla."
Luis Enrique has a number of absentees for Sunday's Primera Division clash with league rivals Real Madrid, not least striker Neymar.
The Brazilian was suspended for one game for being sent off against Malaga, with that ban extended to three matches after he sarcastically applauded the fourth official when making his way off the field.
Barca appealed to the Spanish football federation before turning to Spain's Court of Arbitration for Sport after their initial plea was rejected.
A statement on the Barcelona website read: "Due to the legal uncertainty coming from the lack of an announcement from the Court of Arbitration for Sport (CAS) with less than 12 hours to go until kick-off the Club has decided not to include the Brazilian in the match day squad.
"However, FC Barcelona would like to express its surprise with the lack of clarity arising out of CAS’s unwillingness to perform their judicial duties. This harms both the Clubs involved and the competition itself."
Neymar joins the injured Rafinha, Aleix Vidal and Mathieu on the sidelines. Arda Turan is fit but Enrique has selected Carles Alena ahead of Jordi Masip.
Atletico Madrid strengthened their hold on third place in La Liga after edging Espanyol 1-0 at the RCDE Stadium on Saturday night.
Antoine Griezmann scored the winner in the 73rd minute to take his league tally for the season to 16 goals, as Los Colchoneros moved within four points of second-placed Barcelona ahead of their top-of-the-table clash with Real Madrid on Sunday.
The Periquitos, meanwhile, remain in ninth position after seeing their two-match winning streak come to an end.
Earlier in the day, Villarreal bolstered their European chances with a dramatic 2-1 victory against lowly Leganes at La Ceramica.
After a goalless first half, Cedric Bakambu gave the hosts the lead in the 68th minute, but Miguel Guerrero seemingly rescued a late and much-needed point for the Pepineros, who are perched on the edge of the relegation zone.
Bakambu had other ideas, though, as he popped up with the winner deep into extra time to cement fifth spot for the Yellow Submarine.
Elsewhere, Osasuna and Sporting Gijon did their respective survival bids little good after playing out to a 2-2 draw at El Sadar.
An own-goal from Jorge Mere in the 19th minute was all that separated the two relegation-embattled clubs for much of the contest, before Kenan Kodro doubled the hosts' lead 18 minutes from time.
However, Rojiblancos rallied in the closing stages as two goals in the final 11 minutes from Roberto Canella (79') and Carlos Castro (81') rescued a share of the spoils.
The stalemate left Los Rojillos rooted to the foot of the table, nine points adrift of safety, while Sporting edged to within four points of 17th-placed Leganes.
Malaga all but ensured their top-flight status with a 2-0 win over Valencia at La Rosaleda, courtesy of first-half goals from Recio (36') and Sandro Ramirez (40').
The Boquerones moved up to 14th spot, 13 points clear of the bottom-three, with Los Che only four points better off in 12th position.
Malaga 2-0 Valencia
Villarreal 2-1 Leganes
Osasuna 2-2 Sporting Gijon
Espanyol 0-1 Atletico Madrid
Jorge Sampaoli has confirmed that there has been contact between himself and the AFA but says that the proper process must be followed if he is to leave Sevilla.
The former Chile manager, who has also been linked with the soon-to-be-vacated Barcelona post, has put an end to sopeculation about whether he is on the Argentina Football Association's radar as a possible replacement for Edgardo Bauza.
"I know that there is an interest, because to deny it would be to lie to all of you,” Sampaoli told reporters ahead of Sevilla's La Liga clash against Granada.
"I know they say that I'm the chosen one, but they [the AFA] will have to wait until the time is right in order to do it in a manner that doesn't damage anyone," he continued.
"To do it right now would be to hurt Sevilla, and I'm not going to allow that to happen.
"I know there is a real intention, but when the time comes to have a dialogue with the AFA president [Claudio Tapia], most likely the message will be that, until the end of the season, I cannot meet with anyone because my head is focused here.
"Just as a player has a right to leave if his release clause is paid, so does a coach.
"I have to wait and see what Sevilla's intentions are. The president [Jose Castro] told me that he will talk to me after our last six games."
Sampaoli was brought in as a replacement for Unai Emery, who swapped Sevilla for PSG in a bid to bring Champions League glory to Paris.
The 57-year old has performed admirably in Seville, virtually assuring the club a place in next season's Champions League tournament and challenging for third position, currently held by Atletico Madrid.
The two clubs are both on 65 league points but the club from the capital have a superior goal difference and a game in hand.
Sevilla further cemented their Champions League spot with a 2-0 win over struggling Granada on Friday night.
Ganso netted both goals, opening the scoring on just four minutes before grabbing a second a minute into the second half.
The result sees Sevilla move level with third-placed Atletico Madrid although having scored less goals and with a game more.
Granada, now under the guise of Tony Adams, who oversaw his second loss in charge in his second game, remain in 19th place, with 20 points, two from safety.
Vicente Iborra hit the crossbar on three minutes before Ganso picked up a Stevan Jovetic pass to fire into the top right corner of the net.
Pablo Sarabia fired wide on 13 minutes as Joaquín Correa saw his 26th minute header saved as it made it way to goal.
Ganso tested Guillermo Ochoa with 30 minutes played ahead of saved attempt from Correa.
Sevilla continued to create a number of half chances while Isaac Cuenca was off target for Granada as the half wore down, that also saw Nico Pareja go close before Mehdi Carcela-González had a good shot saved by Sergio Rico.
Pablo Sarabia teed Ganso up for a simple finish at the start of the second half before Jovetic headed over moments later.
Ganso continued to look dangerous while Pareja headed wide, and Andreas Pereira fluffed his chance in the 62nd minute.
Iborra and Mariano both had shots saved as Ezequiel Ponce shot off target late on, but with Sevilla still very much in control, there was only ever going to be one winner in this match.
Real Madrid will look to extend their lead at the top of La Liga when they take on arch-rivals Barcelona in an eagerly-anticipated El Clasico on Sunday night.
Los Merengues should be full confidence ahead of this clash as they come off a dramatic victory over Bayern Munich in the Champions League quarter-finals. The Spanish side beat the German outfit 4-2 after extra-time on Tuesday to clinch their spot in the last four.
Manager Zinedine Zidane's men have not lost in their last 12 games in all competitions, and have won 10 during that unbeaten run which has seen them open a three-point lead over Barca.
“He will not play because we don't want to take any risks," Zidane said of star winger Gareth Bale during his weekly press conference.
“He wants to come back, he has been working hard. Hopefully he will be back for the clásico but it's not certain yet. We will see how he progresses day by day.”
“Gareth has worked very hard to get back with the team after being out three months injured. When he returned he was very excited and happy. He has some issues which stop him being able to play. We just hope it is nothing serious.”
Meanwhile, Barcelona endured a disappointing Champions League result in midweek, drawing 0-0 at home against Juventus to lose 3-0 on aggregate in the quarter-finals.
The Catalan side have gone through a difficult period recently, losing two of their last four games across all competitions, including a 2-0 defeat away at Malaga in La Liga.
“Barca have a team built to compete, to win trophies and to face every challenge," said manager Luis Enrique, according to the Daily Star.
“It is clear we are very hurt to be eliminated from a competition that excites us so much, but now comes a key game against the leaders and a direct rival.
“We have to get ready to compete and I am sure we will do that.”
In team news, Real Madrid remain without centre-backs Raphaël Varane and Pepe for the clash, while winger Bale is out with a calf strain.
Barca will have to make do without star forward Neymar who serves a red card suspension, while Rafinha is unavailable due to a meniscus injury.
Despite rumours linking him with a Unai Emery reunion at PSG, Sevilla's sporting director Monchi claims that his deal with Roma is nearly finalised.
Monchi, whose partnership with Emery at Sevilla resulted in a particularly successful period for the club, announced in March that it is time for him to move on to a new challenge, sparking rumours of a move to the current French champions.
Despite such speculation, Roma was always cited as his most likely destination. In an interview with AS, the 48-year old has confirmed that, barring anything unforseen, he will indeed be joining Luciano Spalletti in the Italian capital.
"I am working on the transfer of power and little else." the former goalkeeper said, referring to his impending departure.
"The work has already been done, all the pressing issues dealt with. And I have prepared my goodbye, it's not easy. I continued to work as if I were to remain here for life, wanting to do this until everyone told me ‘it’s over’.
"Will I go to Roma? It is not done, but it's the closest option. If everything goes the right way and there’s no surprises I’ll go Roma, but I never say it’s done until there's a signature.
"No person of stature from any Spanish club has called me. There are brokers from several big clubs who have expressed interest in me, but I consider this opportunism: if they were major clubs, they would have called me directly.
"It's also true that I said that I would never work for another club after Sevilla in Spain, so it would have been harder to call me.
"I think most of the Sevilla fans have got the message: I needed fresh air after 29 years here.
"And I need to continue to work, but with a different side dish.
"My link with Sevilla was professional: it was the engine of success, but also of wear and tear and detachment.
"The bitterness of defeats was almost equivalent to the satisfaction of victories, I was not been able to split the role of sporting director from that of a fan.
"I tried to convince myself to stay, but a time came when I could no longer: in the future I will leave other destinations suffering, but I will also try not to bind myself to them completely, like I did here.
"The club asked me and I advised them to go for continuity: if you take someone from outside, he will eventually be ‘a substitute for Monchi’."
Ajax Amsterdam will play Lyon while Celta Vigo were drawn to face Manchester United in the semi-finals of the UEFA Europa League scheduled to take place on May fourth and eleventh respectively.
The draw for the last four of Europe's second biggest club competition was held at UEFA’s headquarters in Nyon, Switzerland on Friday.
The first semi-final will feature Ajax facing Lyon at the Amsterdam Arena in the first leg, before tackling one another in the second leg at Parc Olympique Lyonnais.
Meanwhile, Celta will welcome United to Balaidos in their first encounter before the talented side return to face the Red Devils at Old Trafford.
The tournament will see a new champion elected as previous winners Sevilla did not take part this year due to their participation in the UEFA Champions League.