The first half was end-to-end, with both sides intent on getting a win – even though a point would probably take them both through to the round of 16.
The deadlock was broken in the 21st minute, and it was Austria who took the lead. David Alaba’s cross was met by the studs of Christoph Baumgartner, who turned the ball into the net from close range.
It wasn’t long before Ukraine came close to an equaliser when Mykola Shaparenko’s shot was palmed away by Daniel Bachmann, with Andriy Yarmolenko just inches away from getting on the end of the rebound.
Austria responded with a couple of efforts of their own. Konrad Laimer had a curling shot beaten by Georgi Bushchan, and Marko Arnautovic skewed a glorious chance wide from Alessandro Schopf’s cross.
The second half was far quieter, with neither side looking likely to add a second goal.
Substitute Viktor Tsygankov saw his free-kick headed towards his own goal by Stefan Lainer, but Bachmann was alert to keep it out.
Ukraine continued to press for an equaliser but couldn’t find a way past a strong Austrian defence.
With the clock ticking down, Roman Yaremchuk had a low driven shot go across the face of goal, but no one was on hand to tap home.
The game finished 1-0, sealing Austria’s place in the round of 16. They will face Italy after finishing second in the group.
As for Ukraine, they face an anxious wait to see if they qualified as a third-place team. With three points and a goal difference of -1, it’s looking bleak for Andriy Shevchenko’s side.
Georgi Bushchan (6/10) – Maybe could’ve done better with the goal, but that would be a bit harsh. Made one good save from Laimer.
Oleksandr Karavaev (6/10) – Looked like Ukraine’s main attacking threat, getting himself in some good positions down the right.
Illia Zabarnyi (5/10) – Allowed Baumgartner to get in front of him for the goal. A potentially decisive mistake.
Mykola Matvienko (6/10) – Was given a tough time by Arnautovic but coped well enough.
Vitaliy Mykolenko (6/10) – Dealt effectively with the threat down his side. Didn’t contribute much going forward.
Mykola Shaparenko (6/10) – Had one shot well saved. Didn’t do enough otherwise.
Serhiy Sydorchuk (5/10) – Struggled to maintain any control up against Austria’s midfield.
Oleksandr Zinchenko (4/10) – Rarely got on the ball and created next to nothing with it.
Andriy Yarmolenko (5/10) – Sometimes found himself in decent areas, but far from his best.
Roman Yaremchuk (5/10) – Effectively kept quiet by Austria’s centre-back pairing.
Ruslan Malinovskiy (5/10) – Quiet in the first half. Surprisingly taken off at half time.
Viktor Tsygankov (5/10)
Artem Besedin (5/10)
Daniel Bachmann (7/10) – Made a couple of decent saves. Always did well when called upon.
Stefan Lainer (6/10) – Got into some good positions in attack but failed to do much with them.
Martin Hinteregger (7/10) – Handled Yaremchuk very effectively with a solid performance.
Aleksandar Dragovic (7/10) – Earned his clean sheet by letting very little past him. Helped limit Ukraine to just five shots all game.
David Alaba (8/10) *MOTM* – Assisted the winning goal and provided a threat going forward while also keeping Yarmolenko quiet.
Xaver Schlager (7/10) – Good on the ball, composed, energetic – a good display.
Konrad Laimer (7/10) – Always positive when on the ball, helping his team get further up the pitch.
Florian Grillitsch (6/10) – The weakest of a relatively impressive Austrian midfield.
Christoph Baumgartner (7/10) – Scored the opening goal but got substituted on 30 minutes with a head injury.
Marcel Sabitzer (6/10) – Not at his best, but still posed some threat. Got in some good positions but didn’t create enough.
Marko Arnautovic (6/10) – Put in a lot of work and caused some trouble in the backline, but missed an absolute sitter to double Austria’s lead.
Alessandro Schopf (7/10) – Subbed on early after Baumgartner’s injury. Put in a perfect cross for Arnautovic.
Stefan Ilsanker (6/10)
Sasa Kalajdzic (NA/10)