Northern Ireland stunned Ukraine, running out 2-0 winners in rainy Lyon.
They had failed to muster a single shot on target in their opening defeat to Poland, but were much more positive here.
With just four minutes played, Stuart Dallas had the first opportunity, but his low shot was comfortably saved by Andriy Pyatov.
Craig Cathcart’s header went over the bar, before Corry Evans wasn’t alert enough to connect with a cross from Ward.
As the half-time whistle blew, Ukraine had dominated the ball, but the Northern Irish could boast eight shots and three on target, compared to just five and one for their opponents.
Soon after the break, Michael O’Neill’s side were ahead. Oliver Norwood delivered a fantastic free-kick, and Gareth McAuley got free to plant a thumping header past Pyatov.
The conditions were terrible in Lyon, and the match was suspended for just under two minutes due to massive hailstones.
Ukraine pushed forward, with Viktor Kovalenko smashing a half-volley just wide, but they were struggling to create opportunities.
As the game ticked on, there was confusion as Northern Ireland looked to bring on Paddy McNair, with the fourth official signalling for Corey Evans to go off.
However, Dallas moved toward the bench, then was booked for apparent time wasting, and McNair sat back down, only to come on for Evans minutes later.
It got even better for O'Neill's men in stoppage time. Substitute Josh Magennis beat his man down the right, before cutting back to Dallas.
His shot was saved by Pyatov, but McGinn was on hand to knock in the rebound.
Ukraine 0-1 Northern Ireland
McAuley 49 (NI) McGinn 96 (NI)
Ukraine: Pyatov; Fedetskiy, Khacheridi, Rakitskiy, Shevchuk; Sydorchuk (Garmash, 76), Stepanenko; Yarmolenko, Kovalenko (Zinchenko, 83), Konoplyanka; Seleznyov (Zozulya, 71)
Northern Ireland: McGovern; Hughes, Cathcart, McAuley, J.Evans; C. Evans (McNair, 92), Davis, Norwood; Ward (McGinn, 69), Washington (Magennis, 84), Dallas
Referee: Královec (CZE)