Atlético Madrid battled their way back from a goal down to pull off a confidence-boosting 2-1 win at Monaco in Group A, a defiant response to their poor start to the domestic season.

Atlético have won only one La Liga game and their problems at home looked to have followed them into Europe when some haphazard defending allowed Samuel Grandsir to score from close range in the 18th minute. Diego Simeone’s side continued to struggle and it took a flying save from Jan Oblak to prevent Jean-Eudes Aholou from doubling Monaco’s lead with a venomous long-range strike.

Diego Costa gave the visitors a lifeline just after the half-hour mark by controlling a clever through-ball from Antoine Griezmann and providing a cool finish. The goal provided the encouragement Atlético needed and they responded by dominating the rest of the half, eventually clinching the winner on the stroke of half-time when the defender José Giménez headed home from a corner, helped by sloppy goalkeeping from Danijel Subasic.

The USA forward Christian Pulisic came off the bench on his 20th birthday to grab a late goal and seal a 1-0 win for Borussia Dortmund at Club Brugge.

A game of few clear-cut chances looked to be heading for a stalemate before Brugge defender Matej Mitrovic’s clearance looped off the outstretched leg of Pulisic and into the net after 85 minutes. Dortmund had dominated possession at the Jan Breydel Stadium, especially in the second half, and ended a run of eight games without a victory in the Champions League. They handed a debut to 18-year-old Jadon Sancho, the youngest English player to make his bow in the Champions League for a team outside England.

Jadon Sancho is chased by Thibault Vlietinck during Borussia Dortmund’s narrow victory. Photograph: Dean Mouhtaropoulos/Getty Images

Red Star Belgrade ground out a 0-0 home draw against Napoli as Milan Borjan made a flurry of telling saves in a pulsating Group C encounter. Napoli dominated the opening half and twice went close to taking the lead as Lorenzo Insigne struck the crossbar and Borjan denied Arkadiusz Milik from close range with a fine reflex save.

Several last-gasp tackles early in the second half kept Red Star in the match and they threatened for the first time in the 58th minute when Napoli keeper David Ospina palmed away a fizzing low shot from the half-time substitute Dusan Jovancic.

Napoli could not find a way through as Red Star closed ranks, drawing loud cheers from their fans after salvaging a point with a gritty performance.

Schalke marked their return to the Champions League after a three-year absence with a 1-1 draw at home to Porto in their Group D opener to earn some respite after a poor start to the Bundesliga season.

Schalke went into the game having lost all three domestic league matches but Breel Embolo put the home side ahead in the 64th minute before Otávio levelled with Porto’s second penalty 11 minutes later. Porto got a 13th minute penalty when Alex Telles’ deep throw-in landed on Naldo’s arm. But Ralf Fährmann picked the right corner and spectacularly palmed away Telles’ effort. But another Naldo foul in the box gave the Portuguese side the chance to level from the penalty spot and Otávio this time sent Fährmann the wrong way to grab a point for the away side.

In the other Group D match Galatasaray cruised past Lokomotiv Moscow 3-0 with goals from Garry Rodrigues, Eren Derdiyok and a stoppage-time penalty from Selcuk Inan. The hosts were rarely threatened by the Russian champions but ended the game with 10 men following the dismissal of Badou Ndiaye for a second booking three minutes from time.