Austria, defending a six-game unbeaten home run in Europe, took the lead through Tomas Jun inside 10 minutes and appeared to be well on course with their opponents offering little threat.
But Metalist came out for the second period with renewed purpose, and after Papa Gueye equalised on 56 minutes it fell to Cleiton Xavier to put away the winner from the penalty spot 11 minutes from full-time.
The hosts took the lead with the first meaningful attack of the match in the seventh minute.
Nacer Barazite's cross proved the undoing of the visitors' backline, allowing Jun to steal in and slam the ball right-footed high into the net.
Austria continued to press and nearly went 2-0 up when Zlatko Junuzovic's drilled effort from just outside the box forced Oleksandr Goryainov to parry to safety.
Barazite fired over on 22 minutes as Austria remained in command, but Metalist finally made inroads at the other end moments later when Xavier flashed a shot wide.
Austria's Kaja Rogulj saw a header saved by Goryainov on 24 minutes, while on the stroke of the interval the Metalist goalkeeper again had to be on his toes to keep out Alexander Grunwald's 20-yard drive.
The Ukrainians were level 11 minutes into the second half, and the goal was a simple one when it arrived.
Xavier's outswinging corner should have been dealt with by the home defence, but Gueye was allowed freedom to rise and head the ball down the centre of the goal.
Despite that setback, Austria looked by far the most likely to go on and win the match, with Zlatko Junuzovic forcing Goryainov into action again on 67 minutes.
But ultimately it was the visitors who would go on to win it late on after English referee Mike Dean pointed to the spot after Pascal Grunwald was adjudged to have fouled Jonathan Cristaldo in the box.
Xavier popped up to cap a decent personal performance with a goal, clipping the ball into the bottom-right corner as Metalist snaffled all three points.