Eduardo winner defeats Arsenal
The Brazilian-born striker, who joined Shakhtar from Arsenal in the close season, was mobbed by his team mates after striking just before the interval but kept his head down while home fans ignored near freezing conditions to celebrate bare-chested.
His goal condemned the English club to their first Group H defeat and denied them the opportunity to qualify for the knockout round with two games to spare.
"It is a missed opportunity of course," Arsenal manager Arsene Wenger told Sky Sports.
"The hardest thing to do in a big game is score the first goal and that is what we did but then I think it's a lack of maturity not to focus 100 percent and get caught just before half-time."
Speedy striker Theo Walcott stunned the Ukrainian champions 10 minutes into the game when he raced through Shakhtar's half and caught keeper Andriy Pyatov napping with a low strike into the far corner.
The home side equalised 18 minutes later when Dmytro Chygrynskiy's header was slightly deflected by Arsenal defender Craig Eastmond into his own net and Eduardo's strike brought a near capacity 50,000-strong home crowd, including Ukrainian President Viktor Yanukovich, to their feet.
Shakhtar captain Darijo Srna won the ball from Gael Clichy on the right and found his Croatia international team mate unmarked in the Arsenal penalty area, with Eduardo calmly slotting home a low cross.
"We thought we could get through without 100 percent focus on every defensive situation," said Wenger.
"In the second half we gave a lot to come back into the game and were a bit unlucky with the finishing but they were intelligent as well and that explains why we couldn't come back. We had the chances but we could not take them."
The win put Shakhtar level with Arsenal on nine points from four matches but the Gunners still lead Group H on a better head-to-head record after thrashing the Ukrainians 5-1 in their first meeting in London two weeks ago.
In a fast-paced game, chances went begging for both sides.
Shakhtar's Brazilian midfielder Jadson twice wasted great opportunities shortly after Walcott's strike, first hitting a defender with the goal at his mercy then, just a few seconds later, heading against the post.
Arsenal, already without several key players including skipper Cesc Fabregas and forward Andrei Arshavin through injury and illness, could have also lost Nicklas Bendtner late in the first half. However, the Denmark striker was able to return after shaking off an ankle sprain.
The visitors piled on the pressure from the start of the second half. Jack Wilshere missed a golden chance to draw the visitors level shortly after the break but he failed to take advantage of a Shakhtar defensive mistake, firing wide of the goal with only Pyatov to beat.
Pyatov then made several fine saves, first denying Sebastien Squillaci with a point-blank header, then stopping Tomas Rosicky's low drive from inside the box.
Substitute Carlos Vela missed Arsenal's last big chance with five minutes remaining when he fired straight at Pyatov from close range.