Goals by Bernard and Ismaily claimed the victory as City’s re-jigged team finished their group campaign with an underwhelming performance.
The Citizens, previously without defeat in 227 days since going down 2-1 to Arsenal in last season’s FA Cup semi-finals, were two behind inside 32 minutes in Kharkiv and unable to truly recover until Sergio Aguero converted from the penalty spot in added time.
With top spot in Group F already guaranteed, the defeat for a City side showing seven changes from their last outing is not too damaging, though momentum has now seemingly been lost four days before their big trip to rivals Manchester United.
Among the players to come in were 17-year-old Phil Foden, for a full debut, and 20-year-old defender Tosin Adarabioyo.
Adarabioyo, who lined up on the right of a three-man back line with Eliaquim Mangala and Fernandinho, endured a tough start on only his second Champions League start.
Despite knowing that a point would be enough to seal progression to the last 16, regardless of how Napoli performed against Feyenoord, Shakhtar were unwilling to sit back and were rewarded with a couple of first-half goals to seal their progression to the last 16.
City were given a warning when Marlos tested Ederson with a fairly tame attempt, which they failed to take as Bernard curled home a sublime opener five minutes later.
Ederson was equal to Bernard’s next shot, which was this time hit low and hard, but the second goal of the evening arrived just over half an hour in through Ismaily.
City never looked like getting back into the game although Guardiola sent on Aguero in the hope of livening up his side and Jesus did clip the outside of the post before winning a last-gasp penalty.
Aguero stepped up to tuck home the spot-kick but time was almost up and there could be no late fightback.