Man City secured top spot in their Champions League group - despite another missed penalty from Riyad Mahrez - and Borussia Dortmund reached the last 16 after a 0-0 draw at Signal Iduna Park
Although far from a European classic, both teams took away what they needed from the match with a game to spare, wrapping up proceedings in Group G
Man City failed to have a shot on target in the first half - the second time that has happened in the Champions League this season, having also failed to do so against Dortmund in the reverse fixture - and the hosts should have gone ahead before the break, but Youssoufa Moukoko turned an effort wide from close range
Erling Haaland and Joao Cancelo were replaced at half-time
 The in-form striker was kept very quiet by former teammate Mats Hummels, while Cancelo was caught out one too many times by the impressive Karim Adeyemi
Explaining his decision, Man City manager Pep Guardiola said both players had felt unwell before the game, telling : "Erling had a little bit of fever before the game
 Joao as well
 He had a knock in his feet
 He was looking tired, Joao, as well
 So that's why we changed it
"When asked later about Haaland's injury, the Spaniard said: "I spoke with (the medical staff) at half-time and they were a little bit concerned, but I saw him walking more or less normally
 We will see
"Man City had a golden chance to wrap up three points when Emre Can tripped Mahrez over inside the area, giving the visitors a stonewall penalty
 However, the Algerian missed his second Champions League penalty of the season, seeing his effort well-saved by Dortmund goalkeeper Gregor Kobel
"Of course it's a problem," Guardiola told  of the miss
 "Since I was here we missed 24 or 25 penalties, most of them in Champions League, it's too much
"I always admire the courage, the responsibility to do it
 But we miss a lot of penalties
 We have to improve
 The little details and margins in this competition is the key, the difference
"Riyad scored a lot in big important moments, here [in 2021 Champions League quarter-finals]
 If he feels it next time, he is going to take it
 But we have to improve
"However, a point was enough for both sides, who both go into the hat for the last 16 draw on Monday, November 7
The first half lacked the kind of intensity that rippled through the iconic Signal Iduna Park stands, but Dortmund had the best chances
 In the 16th minute, Karim Adeyemi made one of his multiple drives into the area, but his shot went straight at Man City debutant Stefan Ortega Moreno
The goalkeeper was there again soon after as Giovanni Reyna found his gloves too
 It was a neat give and go between Adeyemi and Jude Bellingham in midfield, with the former again striding into the box
 He held the ball up well, eventually rolling it into the feet of Giovanni Reyna, but his shot was tame
Dortmund should have taken the lead in the 36th minute
 Adeyemi fired in a cross from the right with Moukoko there to collect
 However, with only the goalkeeper to beat, he fired the ball well past the post from mere yards out, putting his head in his hands straight after
A poor Rodri shot from range was the pick of Man City's chances up until the one minute of added injury time
 Nathan Ake fired a bullet header over the bar from Phil Foden's fizzing free-kick, although City ended the half without any shots on target
At half-time, Pep Guardiola introduced Bernardo Silva and another former Dortmund player in Manuel Akanjil for Haaland and Cancelo as he looked to inject some life into his City team
Dortmund had a few half openings early on - Ortega again in good form to collect anything coming his way - but the saved penalty just before the hour seemed to galvanise Man City as they started to create some clear openings
John Stones slotted Ilkay Gundogan in down the right of the area, but his shot on a tricky angle was well-saved by Kobel
 Then, Julian Alvarez let fly with a superb first-time strike after a neat set-up from Mahrez, but saw his effort saved
Man City's play did improve as the second half continued, but neither side were really able to create a clear-cut opening with plenty of players caught offside too
 However, it was job done for both City and Borussia Dortmund ahead of the final group games next week
An impressive match from the 20-year-old, who consistently caught Cancelo out in behind in the first half, so much so that the full-back was taken off at half-time
 Ake was sent over to deal with him and did a far better job, with Adeyemi far less effective in the second period
But he still created the most chances of any player in the match (4), a joint-high five touches in the opposition box and two shots
"We played much better second half than in the first half
 We conceded some counter-attacks from them, they're so fast
 We suffered that our game on Saturday was so demanding, physicality and the trip and everything
 We are a little tired
"But we achieved what we wanted, top of the group again, so really good
""It is good for us on that side of the game, defensively we were really good and not many sides keep clean sheets against City with the quality they have got
"To do that is a positive aspect, but I think we could have gone for it a bit more, we had some chances to win the game
"But we have to grateful in the end because they missed a penalty and Greg (Kobel) made a huge save
 Overall we're happy because we were here to get to the next round and we've done it
""It is nice to keep all of them City players out, but especially him [Haaland] because we know how dangerous he is
 I said to him 'it's 1-1 between us now,' but I'm not too satisfied because I haven't scored tonight either
"But ultimately we're happy because we got the draw and we can continue our journey
"Two of England's brightest prospects both played on Tuesday evening in Phil Foden and Jude Bellingham
Of course, neither player was involved in goals, but Bellingham was the busier of the two and impressed in midfield - although that is becoming his standard at only 19 years old
 His passing and distribution was solid and he helped spark a number of Dortmund's promising attacks, especially in the first half
Foden played 81 minutes - when he was replaced by fellow England hopeful, Jack Grealish - and had a few flashes of quality, although not enough to fully affect the game
John Stones also made his return to the pitch for the first time since England's 3-3 draw with Germany at Wembley on September 26
 He looked assured at the back, almost as if he had never been away and even stepped into a defensive midfield role as Guardiola tweaked his side at half time
He did well in the position too - giving both Guardiola and Gareth Southgate another potential option if needed - but Stones will mostly be pleased to have a full 90 minutes heading into a crucial month
 are back in Premier League action on Saturday when they travel to Leicester; kick-off 12
30pm
 Their final Champions League group stage fixture is against Sevilla at the Etihad on Wednesday, November 2
 also play on Saturday in the Bundesliga, travelling to Eintracht Frankfurt, live on ; kick-off 5
30pm
 They will then travel to Copenhagen next Wednesday in the Champions League