Alexandr Suvorov netted what turned out to be a consolation for the visitors but meant a tense finish to the World Cup Group H qualifier for the home side, who also played out the final minutes with 10 men after losing Taras Stepanenko to a red card in stoppage time.
With five minutes gone Yarmolenko's corner found Oleg Gusev but his header was wide of the Moldova goal.
Ukraine's Yevhen Seleznyov then shot from 12 yards but keeper Stanislav Namasco parried the effort.
Yarmolenko's effort from distance was tipped over by Namasco as Ukraine continued to press, Gusev heading over the bar with 15 minutes gone.
Namasco again denied Yarmolenko before the same player was off target with his next effort.
Anatoliy Tymoschuk shot from distance but this time Semion Bulgaru got in the way as Moldova continued to hold on.
Ukraine switched to trying their luck from longer distance but Olexander Kucher fired over from 35 yards.
Yarmolenko shot wide from six yards after being set up by a cross from Gusev who later headed off target with Ukraine's next chance.
Just before half-time Namasco tipped over Gusev's free-kick and Moldova then cleared two Ukraine corners to keep the scores level.
Moldova continued to soak up the pressure in the second half but after an hour Yarmolenko opened the scoring when he shot in following a header by Roman Zozulya.
Ukraine extended their lead 10 minutes later when Gusev's corner was headed in by Khacheridi.
With 10 minutes to go Moldova pulled a goal back from a rare attack, Suvorov shooting home from a pass by Anatolie Doros.
Moldova's Serghei Gheorghiev and Ukraine's Gusev were both off target from long range as Ukraine, despite the late dismissal of Stepanenko for violent conduct, claimed the points