Second-half goals from the home side- the latter from the penalty spot - stunned Didier Deschamps' side in Kiev and put Mikhailo Formenko's charges on the brink of the World Cup.
Zozulya's well-taken finish and Yarmolenko's late penalty condemned the lackluster Bleus to defeat and left Franck Ribery and company with a mountain to climb to reach the finals next summer, especially after Laurent Koscielny was sent off late on.
Mikhail Fomenko's men went into the game having never beaten France before, but having secured their place in the playoffs after finishing just a point behind England in Group H.
Only world and European champion Spain prevented France from automatically qualifying for next year's showpiece in Brazil.
However, it was the supposed underdog Ukraine which dictated play in a tight encounter, with striker Zozulya giving the team the lead midway through the second half.
The home side wrapped up the win with a penalty from Yarmolenko seven minutes from time, before Laurent Koscielny and Olexandr Kucher both saw red as the two sides ended the game with 10 men.
Newcastle United striker Loic Remy made his first start in a competitive match for France since October 2011, while captain Hugo Lloris was also included in Didier Deschamps' starting XI, having not played since being knocked unconscious in Tottenham's Premier League draw with Everton earlier this month.
Meanwhile, Ukraine made five changes from the side that beat San Marino 8-0 in the final group-stage game, Dnipro striker Zozulya leading the line in front of attacking midfielder Edmar.
Both sides created chances early on, with Olivier Giroud seeing his header comfortably saved by Andriy Pyatov, before Yarmolenko had the home team's first effort on goal with a low shot that forced Lloris into action.
But from there, opportunities proved to be rare in what was a tense first half, although Ukraine wasted a good chance to take the lead when Edmar headed narrowly wide from close range just before the half-hour mark.
France began to exert more control in the opening forays of the second half, although Ukraine remained a threat on the counter, with defender Artem Fedetskiy shooting just over from long range.
It was Fomenko's men who finally broke the deadlock after 61 minutes when Zozulya's effort squirmed under Lloris and over the line to delight the home crowd at the Olympic Stadium.
Deschamps' men responded well, Samir Nasri being denied by Pyatov following Giroud's through ball, before Paul Pogba saw his low effort easily handled by the Ukraine shot stopper.
France continued to search for an equalizer and a much-needed away goal as the contest headed towards its conclusion, but Yarmolenko made the task even harder when he converted from the spot after Arsenal defender Koscielny was ruled to have bundled over Zozulya in the area.
Koscielny's miserable night was completed when he was dismissed for an off-the-ball fracas with Kucher and, although the latter was also sent off soon after for a second bookable offense, it is the 1998 world champion which has a mountain to climb ahead of the second leg at Stade de France on Tuesday.