Winger Micah Hamilton scored on a dream Manchester City debut as he helped his side beat Red Star Belgrade and reach the Champions League last 16 with a 100% record.
Hamilton, 20, has been with the club since the age of nine and put City ahead after 19 minutes in a hostile atmosphere in Serbia.
Matheus Nunes found him down the right wing and Hamilton, who has represented England at under-16 level, got into the penalty area and shifted the ball to create space before powerfully firing into the roof of the net.
On a great night for City's academy, 20-year-old Oscar Bobb also scored his first goal for the club with a jinking run at the home defence, before curling in the second on 63 minutes.
Hwang In-beom pulled one back for Red Star when he got free of marker Kalvin Phillips and shot low past Stefan Ortega.
But Phillips made amends when he converted a penalty, after the impressive Hamilton had been fouled.
Aleksandar Katai headed in a late second for Red Star, but reigning European champions City were not to be denied and follow in the footsteps of Real Madrid to advance into the last 16 with six wins from six group matches.
Pep Guardiola's side become only the second English side to achieve this, after Jurgen Klopp's Liverpool did likewise in 2021-22.
The draw for the last 16 will be held at Uefa's headquarters in Nyon, Switzerland at 11:00 GMT on Monday, 18 December.
City will face one of the sides to have progressed as group runners-up, with one of their potential opponents being Inter Milan - the side they beat in last season's final.
Reaction from City's win and follow all tonight's Champions League actionMore to follow.
How to play
Rate players out of 10 throughout or after the game. The rater will close 30 minutes after the final whistle.
Rating range key1 = Give it up10 = Pure perfection
Red Star Belgrade
Squad number18Player nameGlazer
Squad number2Player nameNedeljkovic
Squad number24Player nameDjiga
Squad number5Player nameSpajic
Squad number15Player nameDragovic
Squad number14Player nameOlayinka
Squad number8Player nameKanga
Squad number33Player nameMijailovic
Squad number66Player nameHwang In-beom
Squad number30Player nameBukari
Squad number9Player nameNdiaye
Squad number10Player nameKatai
Squad number22Player nameMijatovic
Squad number23Player nameRodic
Squad number37Player nameLucic
Squad number70Player nameKabic
Manchester City
Squad number18Player nameOrtega
Squad number82Player nameLewis
Squad number5Player nameStones
Squad number25Player nameAkanji
Squad number21Player nameGómez
Squad number4Player namePhillips
Squad number8Player nameKovacic
Squad number92Player nameHamilton
Squad number27Player nameMatheus Nunes
Squad number10Player nameGrealish
Squad number52Player nameBobb
Squad number6Player nameAké
Squad number20Player nameBernardo Silva
Squad number47Player nameFoden
Squad number76Player nameSusoho
Line-ups
Red Star Belgrade
Formation 5-3-2
18Glazer2NedeljkovicSubstituted forKabicat 78'minutes24DjigaBooked at 84mins5SpajicBooked at 45minsSubstituted forRodicat 65'minutes15Dragovic14OlayinkaSubstituted forLucicat 57'minutes8KangaSubstituted forKataiat 57'minutes33MijailovicBooked at 65mins66Hwang In-beom30Bukari9NdiayeSubstituted forMijatovicat 57'minutesSubstitutes
3Degenek6Stamenic10Katai17Krasso19Milunovic20Kangwa22Mijatovic23Rodic27Vasiljevic37Lucic70Kabic80MitrovicMan City
Formation 4-2-3-1
18Ortega82Lewis5StonesSubstituted forAkéat 86'minutes25Akanji21Gómez4PhillipsBooked at 52mins8KovacicSubstituted forSusohoat 76'minutes92Hamilton27NunesSubstituted forBernardo Silvaat 82'minutes10GrealishSubstituted forFodenat 45'minutes52BobbSubstitutes
2Walker3Rúben Dias6Aké16Rodri19Álvarez20Bernardo Silva24Gvardiol33Carson47Foden68Alleyne76Susoho88GrantLive Text
Match ends, Red Star Belgrade 2, Manchester City 3.
Second Half ends, Red Star Belgrade 2, Manchester City 3.
Offside, Manchester City. Micah Hamilton is caught offside.
Delay over. They are ready to continue.
Delay in match because of an injury Sergio Gómez (Manchester City).
Goal! Red Star Belgrade 2, Manchester City 3. Aleksandar Katai (Red Star Belgrade) header from the centre of the box to the bottom left corner. Assisted by Hwang In-Beom with a cross following a corner.
Corner, Red Star Belgrade. Conceded by Manuel Akanji.
Attempt blocked. Osman Bukari (Red Star Belgrade) right footed shot from the left side of the box is blocked. Assisted by Jovan Mijatovic.
Offside, Red Star Belgrade. Jovan Mijatovic is caught offside.
Foul by Mahamadou Susoho (Manchester City).
Jovan Mijatovic (Red Star Belgrade) wins a free kick on the right wing.
Substitution, Manchester City. Nathan Aké replaces John Stones.
Goal! Red Star Belgrade 1, Manchester City 3. Kalvin Phillips (Manchester City) converts the penalty with a right footed shot to the top left corner.
Nasser Djiga (Red Star Belgrade) is shown the yellow card for a bad foul.
Penalty Manchester City. Micah Hamilton draws a foul in the penalty area.
Penalty conceded by Nasser Djiga (Red Star Belgrade) after a foul in the penalty area.
Substitution, Manchester City. Bernardo Silva replaces Matheus Nunes.
Matheus Nunes (Manchester City) wins a free kick on the right wing.
Foul by Hwang In-Beom (Red Star Belgrade).
Attempt missed. Phil Foden (Manchester City) left footed shot from outside the box is close, but misses the top left corner.