Yarmolenko put Ukraine ahead from a corner in the 29th minute, popping up at the back post to beat Stole Dimitrievski with a side-footed finish after latching on to Oleksandr Karavaev's flick.
Ukraine's captain helped double the lead five minutes later, receiving the ball wide on the right and finding Roman Yaremchuk, who timed his run to perfection to stay onside before bending a low shot past Dimitrievski at the near post.
Goran Pandev raised North Macedonia's hopes when he got in behind the defence and calmly chipped the ball over the keeper to score, but their joy was short-lived when the linesman's offside flag went up for the 37-year-old.
TWO MISSED PENALTIES
Dimitrievski produced a fine save early in the second half to deny Ruslan Malinovskiy when the midfielder curled a free kick destined for the top corner, sticking a palm out and deflecting it onto the crossbar.
Ezgjan Alioski dragged North Macedonia back into the match from a 57th-minute penalty after Karavaev fouled Goran Pandev. Georgiy Bushchan saved the spot kick but the ball rebounded straight back to Alioski who fired home his second attempt.
Ukraine had numerous opportunities to restore their two-goal cushion with Dimitrievski, who made seven saves in the match, standing strong to deny them as his defence floundered.
Ukraine were even awarded a late penalty after Daniel Avramovski was adjudged to have handled the ball following a video assistant referee (VAR) intervention but Dimitrievski made another fine save to keep out Malinovskiy's spot kick.
The defeat leaves North Macedonia, who lost 3-1 to Austria in their first game, bottom of Group C with no points, and needing to beat the Netherlands in their final match on Monday if they are to have a chance of extending their stay.
Ukraine have three points after two games and play Austria on Monday. The Netherlands and Austria - both also on three points after opening wins - meet for their second game later on Thursday.
MATCH FACTS
- Ukraine have ended a six-game losing streak at the European Championships, with this just their second ever victory in the competition and first since a 2-1 win against Sweden in 2012, in what was their first game at the tournament.
- North Macedonia have become the eighth nation to lose each of their first two ever European Championship matches, and are the first side to do so since Albania in 2016.
- Four of the five penalties taken at EURO 2020 so far haven't been converted, as many as in the whole of EURO 2016 (excluding shootouts), while the last tournament with more misses from the spot was EURO 2000 (5 – excluding shootouts).
- This was the first European Championship match to see both sides win a penalty since England v France in 2004 and the first game in the competition since 1980 (when we have this data available) to see both sides miss a penalty (excluding shootouts).
- Ukraine became the first side to have two players (Andriy Yarmolenko & Roman Yaremchuk) score in each of their first two matches at a single European Championship tournament.
- Andriy Yarmolenko has scored in three consecutive appearances for Ukraine in all competitions for the first time since October 2016.
- Ezgjan Alioski has scored two goals in his last three games in all competitions for North Macedonia, as many as in his previous 17.
- At 37 years & 325 days old, North Macedonia captain Goran Pandev became the oldest player to win a penalty in a European Championship game since 1980 (when we have such data available).
- Ukrainian center back Illia Zabarnyi became just the fourth player aged 18 or under to start both of his nations first two games at a single European Championship tournament after Belgium’s Enzo Scifo in 1984, England’s Wayne Rooney in 2004 and Netherlands’ Jetro Willems in 2012.