Eduardo came back to haunt ex-club Arsenal as he grabbed a winner for Shakhtar Donetsk against the Gunners in their Champions League Group H tie.
Theo Walcott raced clear to guide in a shot and put Arsenal ahead.
But a Shakhtar free-kick was met by Dmytro Chygrynskiy before being headed into his own net by Arsenal's Craig Eastmond for the equaliser.
Croatian Eduardo then eased in a 45th minute shot from which Arsenal failed to recover.
The striker did not celebrate the goal but the victory will provide the Ukrainian side the revenge they were seeking following their 5-1 humiliation in the reverse fixture two weeks ago.
Shakhtar manager Mircea Lucescu had promised a different side from the one beaten at the Emirates and so it proved as the home team earned a victory which moved them level with an Arsenal side top of Group H on nine points.
The Gunners now need a point at Braga in their next game or three points in the final tie at home against Partizan Belgrade to make sure of progressing in the tournament.
Arsenal had known victory at Shakhtar would have booked their spot in the last 16 knockout stages and it all started so well for them at the Donbass Arena as they looked capable of winning in Ukraine for the first time.
Gunners boss Arsene Wenger has suggested Walcott could switch from the wing to a striking role like Arsenal great Thierry Henry and the England international showed why in lethal fashion after 10 minutes.
Walcott raced on to a Jack Wilshere pass as the visitors cleared a corner and, after leaving the Shakhtar defence trailing in his slipstream, he caught home keeper Andriy Pyatov by surprise by taking his shot early and guiding it into the bottom corner.
However, the goal had an adverse impact on Arsenal, who were missing key players Cesc Fabregas, Andrey Arshavin and Alex Song, while giving the home side an extra impetus.
Jadson headed against the visitors' post and, following a Shakhtar corner, Chygrynskiy struck a well-timed shot which forced keeper Lukas Fabianski into a smart save.
Arsenal failed to heed the warning and they finally buckled under the incessant pressure from the home side when a Jadson free-kick flicked off the head of Chygrynskiy before 19-year-old Champions League debutant Eastmond inadvertently nodded the ball into his own net.
Although the goal looked on the cards, the Gunners will be upset the referee played the advantage in their favour after a foul on Wilshere just before the equaliser.
Eduardo (right) tempered his joy after getting the winner for Shakhtar
The host continued to stretch their rivals and Srna slipped a ball through Eastmond's legs to release Jadson, who drove a shot straight into the arms of a grateful Fabianski.
The pace and movement of the Ukrainian league leaders was proving too much for Arsenal and Wenger was an agitated figure.
Wenger's mood was only worsened when Shakhtar took the lead on the stroke of half-time.
Srna caught left-back Gael Clichy in possession and the Shakhtar captain found former Gunners striker Eduardo, who clinically eased a shot beyond Fabianski's reach.
In an intriguing contest, the inventive Wilshere almost pulled the visitors level when he robbed Willian of the ball just inside the Shakhtar area and, with a clear sight of goal, sidefooted a left-foot shot wide.
Gunners centre-back Sebastien Squillaci also had a great chance to level when he found himself unmarked as he met a diagonal Samir Nasri ball but his header was saved by Pyatov.
That was as close as Arsenal got to earning a draw as Shakhtar extended their unbeaten record at home to 49 matches, while the Gunners were beaten for the first time in this season's Champions League.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.