Benzema’s superb piece of skill and a deflected Toni Kroos free-kick put Madrid in charge and while Oscar Mingueza pulled one back for the Catalans.
But still they fell to defeat in what could be Lionel Messi’s final appearance in this fixture.
Victory means Real Madrid go level on points with Atletico Madrid, with the top three now separated by a single point.
Atletico, without the injured Luis Suarez, face Real Betis on Sunday.
But Real Madrid now own the better head-to-head against both of their rivals while Barcelona and Atletico still have to play each other at Camp Nou in the run-in.
With Atletico stumbling and both Barcelona and Real Madrid hitting their stride, this game looked set to define, if not the title, then who would become favourites to be crowned champions in May.
The result was a riveting contest at a rain-soaked Alfredo di Stefano stadium – certainly one of the most exciting Clasicos in years – that saw both teams squander numerous chances, several efforts come back off the woodwork and Casemiro sent off in extra time.
With the last play of the game, Barcelona substitute Ilaix Moriba rattled Real Madrid’s crossbar.
“We’re still in it,” said Barcelona coach Ronald Koeman.
“We’ve lost a game against a team who’s also fighting for the league, but we’ve eight game left and we will fight to the end.”
Casemiro’s red card had also given Messi a free-kick and the chance for a dramatic equaliser but instead the Argentinian made it seven games now without a goal against Real Madrid, with many wondering if his 45th Clasico will be his last.
Messi might yet turn the tide in the eight games still remaining but there is no doubt Madrid are in the groove after backing up beating Liverpool 3-1 on Tuesday with another crucial victory.
(With inputs from international Agencies)