Arsenal were dominant from the outset, patiently circulating possession around the Shakhtar box in search of an opening, but the Ukrainian defence stood strong as the hosts' chances were limited, with Shakhtar occasionally threatening on the counter to remind Arsenal of their threat.
Mikel Arteta's men did eventually find the breakthrough they had been chasing when Gabriel Martinelli's effort cannoned off the post and into the net via Dmytro Riznyk, an extremely unfortunate goal for Shakhtar to concede after they had held firm for the best part of 30 minutes.
The remainder of the first half followed the same pattern as before the goal, with Arsenal controlling possession while Shakhtar looked to create problems on the counter, but the score remained 1-0 as they headed into the break.
A shuffle of the pack at halftime, with Thomas Partey moving to right back as Mikel Merino replaced the cautioned Ben White, seemed to cause Arsenal to have a twitchy start to the second 45, sloppily giving the ball away repeatedly and allowing Shakhtar to set up camp in their half.
The Gunners did eventually regain their footing in the match, and they almost had their second when they were awarded a controversial penalty for a handball on Valeriy Bondar, but Leandro Trossard's penalty was a poor one as Riznyk made up for his earlier own goal with a routine save.
Shakhtar attempted to turn the screw in the final moments of the game, calling David Raya into action on numerous occasions, but the hosts managed to cling onto their one-goal lead to eventually secure the victory.
ARSENAL VS. SHAKHTAR DONETSK HIGHLIGHTS
Dmytro Riznyk own goal vs. Shakhtar Donetsk (29th min, Arsenal 1-0 Shakhtar Donetsk)
Arsenal have finally found the breakthrough!
The Gunners are enjoying a long spell of possession here, with it eventually being worked forward and into the path of Martinelli, who collects the ball and drives into the box.
Martinelli dummies once before firing a shot towards goal, his effort ricocheting off the post and deflecting off Riznyk into the net, an unfortunate own goal for the Shakhtar keeper that gives Arsenal the lead.
Leandro Trossard penalty miss vs. Shakhtar Donetsk (77th min, Arsenal 1-0 Shakhtar Donetsk)
A controversial penalty is awarded against Bondar after the defender was deemed to have handled an Arsenal cross inside the area.
Trossard steps up to take and attempts to sidefoot his shot down the middle, but Riznyk easily saves with his trailing leg, a horrible penalty by the Belgian.
MAN OF THE MATCH - GABRIEL MARTINELLI
Martinelli was undoubtedly Arsenal's standout player tonight, playing a crucial role in the opening goal as his effort ricocheted off the post and back off of the keeper, giving Arsenal the lead.
The Brazilian created an impressive five chances throughout the 90 minutes, including one significant opportunity, while consistently terrorizing Yukhym Konoplia with three successful dribbles and 46 touches.
A mention must also go to Riznyk, who, despite being the culprit for an unfortunate own goal, made up for it with several strong saves, including a crucial penalty stop to deny Trossard.
ARSENAL VS. SHAKHTAR DONETSK MATCH STATS
Possession: Arsenal 56%-44% Shakhtar Donetsk
Shots: Arsenal 13-8 Shakhtar Donetsk
Shots on target: Arsenal 5-1 Shakhtar Donetsk
Corners: Arsenal 5-3 Shakhtar Donetsk
Fouls: Arsenal 7-9 Shakhtar Donetsk
BEST STATS
WHAT NEXT?
Having bounced back from their first defeat of the season against Bournemouth with a far-from-comfortable victory over Shakhtar Donetsk, Arsenal will now aim to regain their winning form in the Premier League as they take on the challenging task of hosting Liverpool at the Emirates Stadium.
As for Shakhtar Donetsk, they will be boosted by a largely encouraging performance against the Gunners, but they will now turn their attention to an important match against Dynamo Kyiv, who currently sit top of the Ukrainian Premier League table.