Real continued to have more of the ball and Ronaldo was inches away from putting them ahead when his drive from the edge of the area was parried by Valdes onto the crossbar. Ozil then should have done better when his weak strike was comfortably blocked by the Barca keeper.
At the same time whenever Barca got the ball in attack they looked dangerous and Messi restored their lead a minute before the break. Pique back-heeled the ball into his path and Messi dinked the ball over Casillas.
Marcelo who came on for the second half appeared to kick out at Messi and there were angry exchanges between several of the players.
Messi, having only just returned to training after a belated break following the Copa America, was Barca's main danger as he forced Casillas into a low save.
Finally Fabregas was given his bow in front of the home fans with Pedro making way. Defender Sergio Ramos had a golden opportunity to head Real level before Benzema finally scrambled the ball home in the area.
The game looked to be heading for extra time when Messi pounced to fire home an Adriano cross.
AFP