Match ends, Shakhtar Donetsk 2, Manchester City 1.
Manchester City lost for the first time in 29 matches as Ukrainian side Shakhtar Donetsk won to join City in the last 16 of the Champions League.
A much-changed City, who had already secured top spot in Group F, fell behind when Brazilian Bernard curled a shot past Ederson from 15 yards.
Shakhtar doubled their lead as Ismaily capitalised on an Ederson error and tapped the ball into an empty net.
Sergio Aguero scored an injury-time penalty after Gabriel Jesus had been fouled by Bohdan Butko, but City could not extend their unbeaten record in 2017-18.
City had been hoping to become the first British club to win all six of their group matches in one Champions League season, but instead suffered their first defeat since Arsenal beat them 2-1 in the FA Cup semi-final on 23 April.
- Read more: English teams dominate - but can one of them win it?
- Listen to BBC Radio 5 live's Football Daily podcast: 'The Premier League is back'
- Shakhtar boss wears Zorro mask after win over Manchester City
- Quotes and analysis from Wednesday's Champions League matches
Who can City and Shakhtar face?
For the first time in Champions League history, there will be five English teams in the last 16 after Liverpool thrashed Spartak Moscow to win Group E.
It means City, Liverpool, Manchester United and Tottenham all won their groups, while Chelsea came second in Group C.
The draw for the last 16 takes place at 11:00 GMT on Monday at Uefa's headquarters in Nyon, Switzerland and teams from the same country, or who played in the same group, cannot face each other.
Despite winning Group F, City could still face a two-legged match against Bundesliga leaders Bayern Munich, Italian champions Juventus or reigning European champions Real Madrid, who beat them in the Champions League semi-finals two seasons ago.
However, the Premier League leaders could also face less daunting ties in the shape of Swiss side Basel, Spanish team Sevilla or Portugal's Porto, while Manchester United, Liverpool and Tottenham are three of the potential seven sides Shakhtar could be up against.
A chance to impress for City's youngsters
City, who are eight points clear at the top of the Premier League, play away at second-placed Manchester United on Sunday, 10 December (16:30 GMT).
With that in mind and qualification already secured, manager Pep Guardiola, taking charge of his 100th Champions League tie, gave some young players the opportunity to impress.
Seventeen-year-old midfielder Phil Foden, who helped England win the Under-17 World Cup in October, was handed his first senior Manchester City start.
Foden was named as player of the tournament in India two months ago, scoring twice as England came from 2-0 down to beat Spain 5-2 in the final, and he managed to get forward regularly against Shakhtar despite occupying a position at left wing-back.
He volleyed a rare City first-half chance over the bar and also released Jesus, but the Brazilian was denied by some fine goalkeeping from goalkeeper Andriy Pyatov, who was quickly off his line to smother the chance.
It was a tougher match for 20-year-old centre-half Tosin Adarabioyo, who started a senior City game for only the fourth time in his career. Although not directly to blame for either of Shakhtar's goals, Adarabioyo and the rest of the City defence struggled to deal with the forward play from Shakhtar's forwards.
Spanish midfielder Brahim Diaz, 18, played the last 32 minutes for his third City appearance, and produced a fine run to set up Jesus, but the Brazilian's shot hit the outside of the post.
Landmark for Guardiola - stats
- This was Pep Guardiola's 100th Champions League game as manager, becoming the sixth to reach that landmark after Sir Alex Ferguson, Arsene Wenger, Carlo Ancelotti, Jose Mourinho and Mircea Lucescu. He has won 61, drawn 23 and lost 16 times, lifting the trophy on two occasions with Barcelona (2009, 2011).
- None of Manchester City's 42 Champions League group games has ended goalless.
- Manchester City have only made it past the last 16 of the Champions League once, in 2015-16, when they reached the semi-finals before losing to Real Madrid.
- This was the second competitive encounter between Shakhtar Donetsk and Manchester City after the English team's 2-0 win at the Etihad in September.
- Manchester City conceded more than once in the first half of a game for the first time since April (v Chelsea in the Premier League).
- Manchester City have kept just one clean sheet in their last 14 away games in the Champions League (4-0 v Feyenoord in September).
Man of the match - Bernard (Shakhtar Donetsk)
'We came here to win' - what they said
Manchester City manager Pep Guardiola told BT Sport: "Congratulations to them, it was a good game. Their first goal was magnificent, and the second goal we didn't defend that well.
"I'm so pleased for Tosin (Adarabioyo), Phil (Foden) and Brahim (Diaz) and how well they played. We came here to win, we couldn't but we were trying until the end to do so. I'm happy for the performance.
"Now we are going to rest, come back tomorrow and prepare for the game (against Manchester United)."
Manchester City's Bernardo Silva told BT Sport: "The game didn't go as we expected. In the first half they were better than us and it was a deserved win for them.
"In the second half we tried to come back, had our chances, but we are not happy. Even though we had already qualified, we wanted the three points.
"We have played against some amazing teams this season, Chelsea, Liverpool and Arsenal and we did well. In the Champions League you never know what will happen and we will see what happens.
"We will try our best to win all the competitions. Today it was a big opportunity for most of the players that are not playing as much as the others. I hope we can win at the weekend (against Manchester United), this is a really important match for us."
Manchester City play away at Manchester United on Sunday, 10 December (16:30 GMT) then away at Swansea City on Wednesday, 13 December (19:45 GMT). The Champions League restarts again in February.
- 44RakitskiyBooked at 54mins
- 31dos SantosSubstituted forde Azevedoat 64'minutes
- 11MarlosSubstituted forKovalenkoat 82'minutes
- 19FerreyraSubstituted forKhotcholavaat 89'minutes
- 66de Azevedo
- 25FernandinhoSubstituted forAgüeroat 70'minutes
- 3DaniloBooked at 22mins
- 42Y Touré
- 8GündoganBooked at 57mins
- 20Bernardo Silva
- 19SanéSubstituted forDiazat 62'minutes
- 33Gabriel Jesus
- Benoit Bastien
- Shots on Target
Second Half ends, Shakhtar Donetsk 2, Manchester City 1.
Foul by Danilo (Manchester City).
Taison (Shakhtar Donetsk) wins a free kick in the attacking half.
Goal! Shakhtar Donetsk 2, Manchester City 1. Sergio Agüero (Manchester City) converts the penalty with a right footed shot to the top right corner.
Penalty Manchester City. Gabriel Jesus draws a foul in the penalty area.
Penalty conceded by Bogdan Butko (Shakhtar Donetsk) after a foul in the penalty area.
Attempt blocked. Sergio Agüero (Manchester City) right footed shot from the centre of the box is blocked.
Attempt blocked. Eliaquim Mangala (Manchester City) left footed shot from the centre of the box is blocked. Assisted by Gabriel Jesus with a headed pass.
Brahim Diaz (Manchester City) wins a free kick on the left wing.
Foul by Fred (Shakhtar Donetsk).
Substitution, Shakhtar Donetsk. Davit Khotcholava replaces Facundo Ferreyra.
Brahim Diaz (Manchester City) wins a free kick in the defensive half.
Fred (Shakhtar Donetsk).
Attempt missed. Gabriel Jesus (Manchester City) right footed shot from the centre of the box is high and wide to the right. Assisted by Bernardo Silva.
Offside, Manchester City. Danilo tries a through ball, but Gabriel Jesus is caught offside.
Substitution, Shakhtar Donetsk. Viktor Kovalenko replaces Marlos.
Attempt missed. Yaya Touré (Manchester City) left footed shot from outside the box misses to the left. Assisted by Bernardo Silva following a corner.
Corner, Manchester City. Conceded by Bernard.
Gabriel Jesus (Manchester City) hits the left post with a right footed shot from the left side of the six yard box. Assisted by Brahim Diaz.