Quickfire first-half goals from Andriy Yarmolenko and Roman Yaremchuk earned an entertaining 2-1 win in Bucharest.
Ezgjan Alioski pulled a goal back, scoring the rebound after his penalty was saved.
Ruslan Malinovsky also missed a late spot-kick but it did not stop Ukraine moving level with Holland and Austria on three points in Group C having played a game more.
Goran Pandev had a goal disallowed for North Macedonia, who are now on the brink of elimination after losing their opening two games.
An open and bright half saw both teams go close with Eljif Elmas miscuing a shot into the side netting and Yarmolenko shooting wide.
It still took 29 minutes for a breakthrough as Ukraine delivered two quick knockout blows.
Yarmolenko forced a corner after Stole Dimitrievski turned his shot wide but the West Ham winger was not denied when he turned in Oleksandr Karavayev's flick seconds after.
Five minutes later it was 2-0 when Yaremchuk timed his run to race onto Yarmolenko's pass and beat Dimitrievski.
North Macedonia continued to find openings, though, and Pandev was denied a goal by the offside flag after his clever chip beat Georgi Bushchan.
Karavayev was thwarted by Dimitrievski as Ukraine chased a third six minutes before the break but they needed Bushchan to maintain their two-goal lead when he saved well from Enis Bardhi two minutes into the second half.
Malinovsky's effort was parried by Dimitrievski before Macedonia grabbed a lifeline after 57 minutes.
Bushchan brilliantly turned Aleksandar Trajkovski's shot onto the underside of the bar and, when Karavayev tried to clear, he failed to spot Pandev stealing in and fouled the Genoa forward.
Bushchan saved Alioski's penalty but the Leeds midfielder smashed in the rebound to give North Macedonia hope.
Yet Viktor Tsygankov should have made it comfortable for Ukraine with 16 minutes left but the substitute shot wide from 15 yards.
Malinovsky then blew a golden chance to seal the game with six minutes remaining when his penalty was saved by Dimitrievski after Daniel Avramovski handled the forward's free-kick.