There was very little to choose between the two sides in the first half, with neither team able to create a real guilt-edged opportunity.
Isco tried his luck after just one minute with an ambitious effort. Ter Stegen's pass out from the back was blocked into the Spaniard's path 35 yards out and he tried to chip the German but the Barca keeper successfully backpedalled and pouched the effort with ease.
Luis Suarez was the next to threaten on the 10 minute mark. The Uruguayan latched onto a ball over the top from Iniesta but his first touch took him away from goal slightly and his left-footed effort was comfortably saved by Navas.
Zinedine Zidane’s side started at a high intensity as they looked to prevent Barca playing the ball out from the back but Ernesto Valverde’s men looked unfazed by the pressure.
The first half was perhaps most noteworthy for some excellent pieces of defending, Umtiti did well to ease Bale off the ball and win his side a free kick as the Welshman look to latch onto a long ball.
Aleix Vidal, a surprise starter, then launches a raid down the left but his cross was cut out by Mateo Kovacic.
Isco looked to be in fine form early on with some neat touches and he bamboozled Vidal to create room for a shooting opportunity from just inside the box but he could only find the side netting.
Barca were next to threat as they half-heartedly appealed for handball as Carvajal blocked a cross. Lionel Messi then lifted a free kick just over the bar from the edge of the box. Whilst Jordi Alba had to be Alert at the other end to head away a dangerous cross from Marcelo with Bale waiting to pounce.
The game then lost its flow slightly as a series of bookings were issued and both sides were forced into some last-ditch defending. Jordi Alba’s attempted counter was just about stopped by Real before Pique got a toe to the ball to stop Benzema from getting in.
Gareth Bale then had a couple of chance to get his name on the scoresheet, the first coming after good work from Isco down the left. He drove at Vidal before pulling the ball back to the edge of the box where Bale met the ball with a sweet strike, only to see Ter Stegen tip it away. Bale then has the last chance of the first half, heading over at the far post under pressure from Vidal.
Barca had a penalty shout turned down immediately after half-time as Messi went down under the challenge of Ramos.
That decision came back to haunt Barca just minutes later as Real took the lead.
Marcelo drove a low cross across the box and as Pique looked to cut it out he could only guide the ball past a helpless Ter Stegen.
Barca responded well to that set-back, with just inches preventing them from drawing level.
Aleix Vidal’s marauding run down the right was found by Rakitic, Vidal crossed low but Messi could not quite turn the ball home at full stretch. The ball dropped to Deulofeu at the far post who first back across goal, with the same result.
Carvajal almost doubled Real’s lead after good play from Benzema. The Frenchman drove to the byline on the left and pulled the ball back across goal. Carvajal met it but he was denied by a fantastic block by Jordi Alba with the goal gaping.
Luis Suarez saw a header comfortably saved by Navas before Bale nodded over at the other end.
Pique went some way to restoring his reputation when he got the better of Ronaldo one-on-one.
The Portuguese then took centre-stage as he attempted an overhead-kick before having a goal disallowed for offside after latching onto a through ball to beat Ter Stegen at his near post.
Busquets then wasted Barca's best chance so far as he blazed over from six yards with the goal gaping as Barca started to turn the screw.
Keylor Navas made a sensational double save to keep the score level, keeping out Messi’s strike and the rebound before turning the villain as he conceded a penalty for a challenge on Luis Suarez, the replays appeared to show no contact but Messi duly sent the Costa Rican the wrong way from the spot to level the scores once again.
Step forward Ronaldo, the Portuguese gave Real the lead with a goal worthy of winning any game. After being played in down the left, he cut inside Pique and fired an unstoppable effort into the far corner before removing his shirt in what is quickly becoming his trademark style.
That style became an issue just a minute later. The 32-year-old went down under the challenge of Samuel Umtiti in the box, with the referee deeming it to be a dive and promptly issuing Ronaldo with a second yellow card.
Barca then started piling forwards in number but without really creating a real chance.
The game was then put to bed in injury time as Marco Asensio made sure of the win for Real.
He was found by Isco on the counter and he rifled the ball into the top corner with a little help from the underside of the bar from the left-hand side of the box to double Real’s lead and put Zinedine Zidane's side in a commanding position ahead of Wednesday’s second leg at the Bernabeu.