An extra-time header from Cristiano Ronaldo proved decisive as Jose Mourinho's Real Madrid clinched their 18th King's Cup from the jaws of Barcelona.
The combative Pepe deployed in midfield was doing an excellent job to break-up Barca's play although he had to be cautious after picking up a yellow card.
In an all action display he went within inches of opening the scoring with a fine diving header which came back off the post early in the game.
Real had the better of the first half before Barcelona took control but they were unable to find a way through.
Xavi had a shot from distance but Barca were unable to play their usual quick-passing game and both sides looked close to losing their composure in the frenetic atmosphere.
Pedro Rodriguez and Messi both shot wide while Madrid brought on Emmanuel Adebayor as they tried to change the direction of the game.
It was keeper Iker Casillas who kept Madrid in the match with several vital saves against from Messi and Pedro before an excellent save to deny Iniesta.
Di Maria just had time to see a shot tipped over by Pinto before the referee signaled 30 minutes more.
In extra time Ronaldo seemed to find another gear as he first fired narrowly wide and then went on to score the winner.
Di Maria and Marcelo combined well down the left wing before the Argentine crossed for Ronaldo to head home at the back post to deliver him his first cup in Spain and his sides’ first trophy since 2008.