Mikhail Fomenko's men went into the game having never beaten France before, but having secured their place in the play-offs after finishing just a point behind England in Group H.
Only world and European champions Spain prevented France from automatically qualifying for next year's showpiece in Brazil.
However, it was the supposed underdogs Ukraine who dictated play in a tight encounter, with striker Roman Zozulya giving them the lead midway through the second half.
And the hosts wrapped up the win with a penalty from Andriy 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 their 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 hosts' 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, defender Artem Fedetskiy shooting just over from long range.
And 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 denied being by Pyatov following Giroud's throughball, before Paul Pogba saw his low effort easily handled by the Ukraine shot-stopper.
France continued to search for an equaliser and a much-needed away goal as the contest headed towards its conclusion, but Yarmolenko made their 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 dismissed soon after for a second bookable offence, it is the 1998 world champions who have a mountain to climb ahead of the second leg at the Stade de France on Tuesday.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.