With one eye on Sunday's Premier League Manchester derby against United, City coach Pep Guardiola rested his entire first-choice back four and Shakhtar took advantage as they romped into a 2-0 lead before halftime.
Needing only a draw to be sure of qualifying, the home side launched waves of attacks instead of sitting back as Bernard curled a superb shot from 15 metres past City keeper and compatriot Ederson in the 26th minute.
Ismaily added the second six minutes later, capitalising on Ederson's error and beating him to a long ball by Marlos before stroking it into an empty net to delight a full house in Kharkiv, where Shakhtar played their group home fixtures.
News that makes sense
Your trusted source for staying up-to-date with the world around you. Get free daily news updates and analysis, straight to your inbox.
Taison twice fired narrowly over the bar either side of the break as Shakhtar kept up the pressure before late substitute Sergio Aguero netted a stoppage-time penalty for City.
Aguero blasted his spot-kick past keeper Andriy Pyatov but it was scant consolation for City coach Pep Guardiola, who had little to cheer on his 100th Champions League appearance as manager.
The draw for the last 16 is in Nyon, Switzerland, on Monday and Premier League leaders City will head a pack of five English teams in the knockout stages, with Liverpool, Manchester United, Chelsea and Tottenham Hotspur also through.
(Writing by Zoran Milosavljevic; Editing by Ed Osmond, Neville Dalton)
