Real Madrid clung on for a 2-1 victory over Barcelona that sent them to the summit of LaLiga as Lionel Messi's Clasico goal drought went on.
First-half goals from Karim Benzema and Toni Kroos put Zinedine Zidane's side in control, and though Oscar Mingueza pulled one back on the hour mark, there was no goal for Messi – the top scorer in the history of El Clasico but now without a goal in his last seven matches against Real.
The Argentinian was not the only Barca man struggling in front of goal as the visitors bossed possession – enjoying 69 per cent – but failed to make it count while Madrid looked a constant threat on the break in horrendous weather.
It means just one point separates the top three in the title fight as the season heads for a thrilling conclusion.
Real had started the night in third, behind Barca, but victory put them top of the table on goal difference ahead of local rivals Atletico, who face Real Betis on Sunday evening.
Madrid have won 15 of their last 20 games in all competitions, and have won three in a row against their main rivals for the first time since 1978.
Before the match all eyes were on Messi as he matched the injured Sergio Ramos' record with his 45th Clasico appearance, though it remains to be seen if either or both men have now made their last.
The 33-year-old was soon involved in some encouraging moves as Barca dominated the early exchanges, but they did not manage to test Thibaut Courtois before Benzema struck with 13 minutes gone.
Lucas Vazquez sent in a low cross from the right and Benzema got in front of Ronald Araujo to beat Marc-Andre ter Stegen at his near post with a backheeled finish.
Barca responded brightly, but Messi's cross was too high for Ousmane Dembele and again Courtois' goal was not seriously threatened before the second goal came.
Vinicius Junior, instrumental in the midweek win over Liverpool, was brought down on the edge of the area to present Kroos with the opportunity from the set-piece.
The Germany international struck his free-kick well enough but it would go in with the help of a deflection off Sergino Dest, with Jordi Alba unable to adjust on the line as he could only help the ball into the net.
Barca were reeling and moments later Federico Valverde turned Vinicius' cross on to the post before Lucas Vazquez shot straight at Ter Stegen on the follow-up.
After Dembele's claims for a penalty were waved away, it was Messi's turn to strike a post as his corner beat Courtois, but Barca would go in 2-0 down at the break.
Antoine Griezmann replaced Dest at the break, with Mingueza moving to right back, and the move would pay off as Griezmann added attacking impetus and then, on the hour, the former found the net.
As torrential rain lashed down, it was a goal to match the conditions with the full-back failing to make a clean connection after both Griezmann and Frenkie De Jong missed Alba's cross, though he did enough to bundle it home.
Madrid responded to the setback by striking the post through Vinicius as the game opened up.
Barca had another penalty shout with nine minutes left when substitute Martin Braithwaite went down while challenging Ferland Mendy for the ball but despite their furious protests, nothing was given.
There was one more late twist when Casemiro was sent off in the last minute, earning a second booking for fouling Messi, but it did nothing to change the result as Barca's frustration was summed up by a stoppage-time effort from Ilaix Moriba which struck the crossbar.