Cristiano Ronaldo scored twice in his 150th European club match as Real Madrid beat Borussia Dortmund for the first time in Germany. His goals wrapped up a 3-1 win after Gareth Bale had put them ahead with a superb volley in the 18th minute.

Ronaldo doubled Real’s lead before Pierre-Emerick Aubameyang pulled a goal back in the 54th minute but the Portuguese international confirmed the holders’ victory when he fired past Dortmund’s keeper Roman Buerki in the 79th minute.

It also ensured there would be no repeat of last season’s draw, when Dortmund had come from 2-0 down, and Real now have maximum points from two matches in Group H and are neck-and-neck with Tottenham, who also gained their second win by beating Apoel Nicosia 3-0 in Cyprus.

Real were lucky not to concede a penalty when Sergio Ramos cleared a Maximilian Philipp effort off the line with his hand before Bale gave them the lead from Daniel Carvajal’s cross .

Dortmund had a chance to equalise just after the break but Raphaël Varane cleared Andriy Yarmolenko’s cross on the goalline before Aubameyang could take advantage.

It was Real, however, who scored again when Bale was given too much space to cut in and find Ronaldo in the penalty area. Aubameyang stabbed in Gonzalo Castro’s cross to keep the game tight, until Ronaldo broke clear with his 13th goal in his last seven Champions League games.

Afterwards the Real coach, Zinedine Zidane, said: “We had chances. We had a spectacular game, a brilliant game. I am delighted for Ronaldo and Bale. The side worked hard. The midfield worked very hard. I am extremely happy because they played a tremendous game.”

While Liverpool were drawing against Spartak Moscow, Sevilla moved clear at the top of Group E with a 3-0 win over Maribor at Ramón Sánchez Pizjuán with their striker Wissam Ben Yedder becoming the first player in the club’s history to score a hat-trick in a European game.

The Frenchman nudged in from close range in the 26th minute to give Eduardo Berizzo’s side the lead after a strong run from the Argentinian Joaquin Correa, who beat four players before cutting the ball back to his team-mate.

Ben Yedder then latched on to a simple through ball from Franco Vázquez after some neat passing in midfield to tuck the ball under Maribor’s goalkeeper Jasmin Handanovic and in off the far post in the 37th. He completed his hat-trick with seven minutes remaining from the penalty spot after a foul on Sébastien Corchia.

Wissam Ben Yedder celebrates after completing his hat-trick from the penalty spot. Photograph: Julio Munoz/EPA

In the Group F meeting between the first match losers, an early goal from Lorenzo Insigne put Napoli on course for a 3-1 win over Feyenoord, who had lost their opening game 4-0 at home to Manchester City, in a match the Serie A side dominated although their opponents missed a penalty.

Insigne scored after just seven minutes, stealing possession near the centre circle and sprinting clear before firing home past the outstretched arm of the diving goalkeeper Brad Jones.

Dries Mertens added the second just after half-time courtesy of a poor back pass by the Feyenoord defender Kevin Diks.

Feyenoord could have reduced the deficit in the 68th minute after Steven Berghuis was brought down by the combined efforts of Faouzi Ghoulam and Kalidou Koulibaly, but Jens Toornstra’s penalty was saved by Pepe Reina.

Napoli responded with a third goal two minutes later when José Callejón seized on another defensive error, this time from Renato Tapia, to score from a tight angle.

Sofyan Amrabat scored a consolation seconds from the end, bursting through the defence for Feyenoord’s first goal in this season’s competition.

Group G leaders Besiktas maintained their winning start with a 2-0 win over RB Leipzig with Ryan Babel and the Brazilian Talisca settling the issue before half-time.

Babel capitalised in the 11th minute when Cenk Tosun cut in from the left and crossed for the Dutch winger to side-foot beyond Leipzig goalkeeper Peter Gulacsi. Talisca doubled the lead in the 43rd minute, meeting a cross from Ricardo Quaresma with a diving header.

Monaco’s campaign suffered a severe blow as last season’s semi-finalists were beaten 3-0 at home by Porto with Vincent Aboubakar scoring twice.

After the French club had dominated proceedings Porto took the lead in the 31st minute when Danilo Pereira’s shot was parried by keeper Diego Benaglio into the path of Aboubakar, whose first shot bounced off the post before his second attempt hit the roof of the net.

They added a second in the 69th minute, Aboubakar tapping in Moussa Marega’s cross from the right. With a minute left the substitute Miguel Layun took advantage in a goalmouth scramble to complete the scoring.