Manchester City's 28-match unbeaten run came to an end after losing 2-1 at Shakhtar Donetsk in their final Champions League Group C clash.
Jubilant Shakhtar, who needed only a point to qualify for the last 16, gained victory thanks to Bernard's fine curling effort (26) and Ismaily's simple finish (32) after City goalkeeper Ederson had committed himself outside of the box.
Sergio Aguero's injury-time penalty (90+1) halved the deficit, but the final result puts an end to City's fine run in all competitions, going back to April, as well as their 20-match winning streak from this season.
Play Super 6
Simply predict six correct scores to win the £250k jackpot. Enter your selections for free here.
City had already secured top spot in the group before the game, and the draw for the last 16 of the Champions League will be at 11am on Monday, which you can follow live on Sky Sports' digital platforms.
With all group tables decided, Pep Guardiola's side will face either Bayern Munich, Basel, Juventus, Sevilla, Porto or holders Real Madrid.
Manchester City, looking ahead to Sunday's Manchester derby live on Sky Sports Premier League, made seven changes for the trip to Kharkiv as Guardiola handed 17-year-old Phil Foden his first start.
City made seven changes from the side that beat West Ham on Sunday. Young Phil Foden made his first start for the club, while 20-year-old English defender Tosin Adarabioyo also made his second City start. Leroy Sane did make the first XI, but was subbed off after an hour.
After a slow opening, the game burst to life when some Brazilian magic from Bernard gave the hosts the lead, curling into the top corner from 15 yards to the left of the penalty area.
Ederson then got down well to deny Bernard a second, but it was fellow Brazilian Ismaily who doubled Shakhtar's lead on 32 minutes from Marlos' fine lofted ball over the top. Ederson came rushing out, never fully committed as he missed the ball, and allowed Ismaily to roll home into the empty net to stun City.
Eliaquim Mangala did well to block Fred's effort before the break, while at the other end Gabriel Jesus failed to take advantage after being put through on goal by Foden's impressive through ball.
Festive Football on Sky Sports
See 2017 out, and the New Year in, with a bang! There's more than 50 live games on Sky Sports this festive season. Upgrade to Sky Sports!
Leroy Sane almost halved the deficit after the break, forcing Andriy Pyatov into a save, but City's next chance came 10 minutes from time as sub Brahim Diaz did well to centre for Jesus, who squeezed an effort onto the outside of the post from close range.
City did get their goal in injury time as Jesus was brought down by Bohdan Butko in the box, with sub Sergio Aguero converting the spot kick, but Shakhtar held on for a fine victory.
- Manchester City finished the group stage with 15 points (W5 D0 L1) - only Spurs this season (16), Manchester United in 2007/08 (16) and Arsenal in 2005/06 (16) have collected more in a single campaign among English clubs in the current format.
- This was Pep Guardiola's 100th Champions League game as a manager; while at 46 years of age, he is the youngest to reach a century of games in competition history
- Phil Foden became the youngest English player to start a Champions League game in competition history (17y 191d).
- The 17-year-old is also the first player born in the 21st Century to start a game in the Champions League (born in May 2000).
Man of the match - Bernard
In a game where Shakhtar needed a result, their key Brazilian attackers showed up. Bernard was the best of lot, setting them on their way with a superb curling effort created solely by himself after a very slow start to the game in Kharkiv.
He was a constant threat in the final third, and also made more interceptions (four) than any player on the pitch.
City now go to rivals Manchester United on Super Sunday, live on Sky Sports Premier League from 4.30pm, before then going to Swansea on Wednesday night. They will find out their last 16 opponents in Monday's draw.