Cristiano Ronaldo answered his critics for his poor performance against Barcelona last month by scoring the opener after 11 minutes, picking up Karim Benzema's pass before driving past Gerard Pique and firing low past Jose Manuel Pinto.
Barcelona took control for the rest of the first period but could not find a way through as Alexis Sanchez's header came back off the post and Andres Iniesta fired wide when well-placed inside the area.
But four minutes into the second half they were level as Carles Puyol headed home Xavi's corner.
Iniesta and Benzema then saw efforts come back off the bar and post respectively before Abidal, who signed a one-year contract extension, latched on to Lionel Messi's excellent ball over the top to prod past Iker Casillas and score only his second goal in five seasons at the club.
Jose Mourinho surprised many by recalling Ricardo Carvalho after 21 games out through injury and handing Hamit Altintop only his third start as a Madrid player at right-back.
However, just as in the league clash between these two last month, it was the hosts who went ahead early on.
Ronaldo showed great pace to surge past Pique, but Pinto in the Barcelona goal was at fault as the ball crept between the keeper's legs on its way into the net.
Barcelona responded by dominating for the remainder of the first half.
Sanchez headed Cesc Fabregas' cross off the inside of the post and Iniesta should have equalised when the Chilean found him free inside the area, but for once the Spain international's control deserted him and he couldn't squeeze the ball in from a tight angle.
Madrid held on until half time, but just minutes after the break the Catalans were deservedly level as Xavi's corner picked out the completely unmarked Puyol and his diving header gave Casillas no chance.
Moments later Iniesta nearly put the visitors in front as more brilliant combination play between he and Fabregas put the Barca number eight through just inside the area, but Sergio Ramos got across to deflect his volley on to the bar.
Four minutes later it was Madrid who struck the woodwork as Altintop's cross was headed powerfully against the post by Benzema.
With Madrid still struggling to create chances, Mourinho brought on Mesut Ozil and Jose Maria Callejon for Gonzalo Higuain and Lassana Diarra in the search of a winner.
Callejon's first contribution, however, was to get booked for a late challenge on Messi and Pepe was also lucky not to see a second yellow card directly after the foul as he appeared to stand on Messi's hand while the Argentinian was on the ground.
Unusually it was Barca's set-pieces that were causing Madrid the most problems and from another Xavi free-kick Sergio Busquets headed just over when he should have found the target.
The winner did eventually arrive for Barcelona, though, and predictable Messi was heavily involved.
Messi escaped Madrid's pressure in the midfield and scooped a wonderful ball over the top for Abidal, who kept his cool to slot past Casillas.