The first gran clásico shown at cinemas lived up to its billing and turned out to be a thriller, packed with twists and suspense. When the dust settled on a tense and absorbing contest, there were many heroes but one stood taller than the rest. Zlatan Ibrahimovic was the star who had appeared set for little more than a cameo role but came from the bench to crash home the volley that gave Barcelona a dramatic 1-0 victory.

There was enormous satisfaction too for Barcelona, having held Madrid off for half an hour after Sergio Busquets' red card on 62 minutes – not just held them off: there were gigantic performances from the Barcelona defence, led by the astonishing Carles Puyol, but Barcelona made chances even with 10 men. "We didn't just wait; we continued trying to get behind them and always faced them head on," said Pep Guardiola, their coach. Madrid, too, had wonderful opportunities. It could easily have finished 3-3 or 4-3 to either side. "We deserved at least a draw," the Madrid coach, Manuel Pellegrini, said.

It was billed as the greatest cast ever and Leo Messi was included despite question marks over his fitness, but to start with there was no place for the man who would end up playing the central role. Ibrahimovic, struggling with a hamstring injury, began on the bench. For Madrid Cristiano Ronaldo made his first start in 60 days as a forward in a 4-3-1-2 formation.

Ronaldo was greeted with whistles. Somehow it did not convince; he is not Luis Figo and had said before the match that he has no problem playing the pantomime villain – in 2006, he reminded his audience, every stadium in England had it in for him and he was the Premier League's best player. He was right. The whistles spoke as much of fear as loathing and the fear was well founded.

When Madrid stole possession and hit quick, direct balls Ronaldo's way he troubled Barcelona. When the first half's best chance came his way, though, he failed to take it, hitting against Victor Valdés's legs from Kaká's pass. Barcelona were unsettled, crowded by an intense Madrid side who brought their defensive line up the pitch to shut down the spaces. Barcelona were also vulnerable to Madrid's swift dashes forward – especially on the left.

The message for Madrid seemed clear: ambush them, win it and go. They did so impressively. Barcelona were thankful for a superb diving intervention from Puyol on Marcelo. "I don't remember a time when Barcelona created so little," Pellegrini remarked.

Beset by Madrid's pressure, Barcelona's best outlet appeared to be into the gap behind the back four and Thierry Henry spent much of the first half appealing for that very ball. Mostly he ran and called in vain. When Seydou Keita did play one through, it was overhit; on other occasions his frustration saw him fall foul of the offside trap. When it came to a straight sprint against Pepe, he came off second best. At the start of the second half he came off, replaced by Ibrahimovic.

Puyol made a wonderful block on Gonzalo Higuaín. Almost immediately after Ronaldo seemed to have outrun Gerard Piqué but the centre-back, who handled his former team-mate marvellously for most of the night, recovered, won the ball and went striding out from the back. He laid the ball into the path of Xavi Hernández. It was worked wide to Dani Alves, steaming forward on the right. His pass sailed over Piqué towards Ibrahimovic who sidefooted home on the volley. He had been on the pitch five minutes.

The delight did not last much longer, however, as Barcelona had Busquets sent off for his second yellow card after he handled Lassana Diarra's pass. There was a warning soon after when Ronaldo headed over – it was to be his last contribution as, tired now, he was replaced by Karim Benzema. A Ronaldo down but a man up, Madrid pushed. Barcelona were grateful to another heroic intervention from Puyol; Kaká was snuffed out as he produced a moment's inspiration; and Benzema scrambled his shot over.

And yet still Alves was more outside- right than right-back and Barcelona should have scored when Piqué headed over, the other full-back Eric Abidal shot wide and Messi missed from six yards, his shot flying over off Iker Casillas after Alves had produced a barely plausible pass into his path. A minute later Diarra was sent off for a second yellow. There was just about time for Madrid to launch the ball forward but there would be no Hollywood finish.