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.
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.
The Brazilian used a decoy run down his left to buy an extra second, before guiding the ball out of Ederson's reach from just inside the box.
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.
A pass over the top was not dealt with by Ederson, who raced well off his line and gave Ismaily the chance to simply knock the ball around him and roll it into an empty net.
City have shown plenty of fighting spirit in recent weeks, scoring late winners in their last four outings, and they nearly pulled one back early in the second half after Leroy Sane got on the end of the cut-back, only for Andrij Pyatov to keep it out.
Taison recovered from an early injury scare in the match to play a pivotal role for his side, coming close with a couple of clean strikes, though momentum was with the visitors for the majority of the second half.
Yaroslav Rakitsky could have compounded the visitors' misery with his free kick, which went up and over the wall but into the hands of Ederson, and there was then a chance for Aguero to reduce to deficit slightly.
The substitute striker added to his impressive away record in this competition by converting from the penalty spot, after Bohdan Butko brought down Jesus, but City could not find a second in the remaining 60 seconds as their impressive run came to an end.
Shakhtar Donetsk (4-2-3-1): Pyatov; Butko, Ordets, Rakitskiy, Ismaily (Azvedo 64'); Fred, Stepanenko; Taison, Marlos (Kovalenko 82'), Bernard; Ferreyra (Khocholava 89')
Manchester City (3-4-3): Ederson; Mangala, Adarabioyo, Fernandinho (Aguero 70'); Danilo, Yaya Toure, Gundogan, Foden; Bernardo, Sane (Diaz 62'), G Jesus