Manchester City sealed their Champions League progress as group winners despite Riyad Mahrez missing a penalty and Erling Haaland being kept quiet on his return to Borussia Dortmund in a 0-0 draw.
Pep Guardiola's rode their luck at times on Tuesday and also wasted a glorious chance to claim victory at Signal Iduna Park, but they always knew a point would be enough to win Group G.
That did not always look a given, though. City could not handle Karim Adeyemi before half-time, the young forward teeing up team-mates three times and also missing a presentable chance of his own.
The away side looked brighter after Haaland's half-time withdrawal, but the Norwegian surely would have taken the penalty that Mahrez had saved; it had no bearing on City's main objective, however.
City's first fortunate escape came as Dortmund threatened in the 16th minute, Adeyemi hitting a feeble effort at Stefan Ortega after being released into the right side of the box.
He showed greater composure in a similar scenario a few moments later, opting to pass across the area to Giovanni Reyna, but the American's eventual shot was tame.
More good work from Adeyemi went unrewarded just past the half-hour mark, with Youssoufa Moukoko inexplicably missing the target from close range after latching on to a square pass.
Guardiola responded to City's lack of control by bringing Bernardo Silva on for Haaland.
The change had the desired effect, but it meant the lethal Haaland was unavailable for penalty duties after Emre Can clumsily fouled Mahrez, whose subsequent spot-kick was saved by Gregor Kobel.
A Julian Alvarez snapshot was also parried by Kobel, who ensured Dortmund held on to the point that takes them through.