Despite a late effort by Oscar, goals from Alex Teixeira and Fernandinho were enough to give the Ukrainian champions breathing space at the top of Group E and extend an extraordinary unbeaten run stretching back 11 months.
It was Chelsea's first loss since they went down to Atletico Madrid in the UEFA Super Cup, but things would have been far worse for the Premier League leaders had Juventus not been held to a 1-1 draw at FC Nordsjaelland.
Chelsea remain in second place but are now three points behind Shakhtar ahead of the return game on November 7, while coach Roberto Di Matteo must hope for a quick recovery prior to Sunday's visit of Manchester United.
John Terry returned for Chelsea after missing their 4-2 win at Tottenham Hotspur as he served the first instalment of a four-game ban for racially abusing QPR's Anton Ferdinand, but his first contribution was unfortunate.
Ironically sporting a Unite Against Racism armband, one year to the day since his clash with Ferdinand, the Blues captain unwittingly diverted a shot into the path of Teixeira, who drilled the hosts into a third-minute lead.
Another Chelsea stalwart, Frank Lampard, was making his 100th European appearance, but he endured a similarly forgettable start to the game, with injury forcing him off in the 16th minute.
Eden Hazard replaced Lampard and helped craft an opening for Fernando Torres, but Shakhtar goalkeeper Andriy Pyatov came out to save at the Spaniard's feet.
The hosts refused to be flustered by Chelsea's forays into their territory, however, and the dangerous Willian twice threatened to extend their lead with attempts from long range.
The Brazilian with the afro haircut then teed up Henrik Mkhitaryan for a powerful shot that Petr Cech parried, while the Czech goalkeeper also had to claw away a close-range effort from Yaroslav Rakitskiy.
The half-time whistle came as a relief for Di Matteo's side but things got no better in the second half, as the home side doubled their advantage inside seven minutes.
Hazard was caught in possession in midfield by Fernandinho, who hared upfield to collect a lay-off from Luiz Adriano before crashing a precise low shot into Cech's bottom-right corner.
Pyatov had to repel long-range shots from Hazard and Ramires, but Mircea Lucescu's men refused to be pushed back.
Cech twice had to deal with smartly hit shots from Mkhitaryan, while Adriano saw a header bobble narrowly wide of the left-hand post.
Oscar tucked home Branislav Ivanovic's low cross in the 88th minute to claim a consolation goal for Chelsea, but Shakhtar were in no mood to relinquish their record of having never lost at home to an English club.