Ukraine earned their second win in Group H and share third place with Poland on eight points, behind leaders Montenegro and England.
Ukraine supporters pelted the Moldova penalty area with snowballs to impose extra psychological pressure on the hosts' goalkeeper and they were warned by the stadium announcer.
Andriy Yarmolenko, who inspired Ukraine's 3-1 win in Poland five days ago, broke the deadlock after 61 minute when he steered the ball past the keeper after a perfect headed pass from Roman Zozulia.
Centre back Evhen Khacheridi, unmarked at the near post, headed in a corner nine minutes later to increase the lead but Moldova pulled one back 10 minutes from time.
Alexandr Suvorov curled a left-foot shot from outside the penalty area into the far corner to convert Moldova's only attempt soon after coming off the bench.
Ukraine were reduced to 10 men in stoppage-time after Taras Stepanenko was red-carded for a reckless challenge.
Evhen Seleznyov scuffed a clear-cut chance after 11 minutes after being sent through one-on-one by Yarmolenko who then forced the keeper into a crucial save with a thunderous curled shot from outside of the area.
- Sports & Recreation