Brazilians Rodrygo and Vinicius Jr. scored in the first half as Real Madrid eased past Shakhtar Donetsk 2-1 in Champions League Group F on Wednesday.
The holders dominated the match from the start with almost 60 per cent of ball possession and 35 total attempts against only 11 from Shakhtar.
But the hosts squandered a string of chances and dangerously left open the door for Shakhtar to stay in the game.
"It was a game that we should have won 7-1," Real midfielder Toni Kroos told Movistar Plus. "It’s hard to believe that we won by just 2-1 given the chances that we had.
"We needed to keep our focus until the end because it was only one goal deficit and any mistake would be costly."
Rodrygo gave Real Madrid the lead in the 13th minute with an angled strike from the edge of the box.
With Vinicius and Federico Valderde running the channels, Rodrygo was playing in a more centralised role as a playmaker close to Karim Benzema.
He received a pass from Vinicius and sprinted towards the goal between three defenders before lashing a precise shot to the goalkeeper's left.
Rodrygo has scored 11 goals for Real in the Champions League, equalling club hero Raul Gonzalez for the most goals scored for the team in the competition while aged 21 or under.
Vinicius extended Real's lead 15 minutes later, finishing a fine collective effort by his team mates with a close-range strike after beating the offside trap.
Vinicius missed two clear chances in the following minutes and left Shakhtar in a position to close the gap with a beautiful goal by Oleksander Zubkov.
The Ukrainian striker reduced the deficit following a counter-attack six minutes before the break with a magnificent acrobatic volley from a Bohdan Mykhailichenko cross.
Shakhtar goalkeeper Anatolii Trubin was the star of the second half with a series of brilliant saves to stop Real extending their lead.
With Real pressing Trubin’s box relentlessly, they were exposed to counter-attacks and Mykhailo Mudryk almost tied the match in one of those, in the 51st minute, but his effort was denied one-on-one by his countryman Andriy Lunin, who was standing in for the injured Thibaut Courtois.
Vinicius, Benzema, Rodrygo and Valverde all had several chances denied by Trubin later.
Substitute Sergio Asensio smashed a thundering strike off the far post in added time.
The win lifted Real to a maximum nine points from three group games. Shakhtar are second in the standings on four points, one more than third-placed Leipzig.
Shakhtar and Real Madrid will face each other again next week in Warsaw where Shakhtar are hosting their Champions League matches due to the situation in Ukraine.
Last week marked seven months since Russian forces rolled across Ukraine’s borders in the largest military invasion in Europe since World War Two. Moscow calls its action a "special military operation" while Kyiv and its Western allies say it is an illegal land grab.