Two first half goals sealed the points for the home side, which never looked like losing after playing the Croatian outfit off the park
The Ukrainians were taken apart 4-1 by Paris Saint Germain on the opening matchday, but there were no signs of such a scoreline repeating itself as they dominated from start to finish.
Oleh Husyey headed the home side into an early advantage ofter only three minutes, before an own goal from Josip Pivaric ended the challenge of te Croatian visitors after barely half an hour.
Only Kiev's profligacy cost it a third goal in the second half, but Dynamo nevertheless claimed a vital three points that puts it back into the hunt for qualification from Group A by drawing level with PSG, while Zagreb sinks to the bottom of the standings without a single point.
The home side came flying out of the gates and needed only two minutes to take the lead. Ognjen Vukojevic sent a good cross into the heart of the area, from which Husyev needed no second invitation to head home.
Kiev almost had another goal right from the restart, as Miguel Veloso fed Ideye Brown with a delicious ball into the area, but his header was tipped just over the bar by Ivan Keleva.
Kiev though soon took its foot off the gas after the bright early start, and allowed Zagreb to gain a foothold in the game.
Fatos Beciraj found himself in a great position as he skipped past keeper Oleksander Shovkovski at an angle, but his delivery was just missed by the onrushing Marcelo Brozovic.
But Kiev would soon hit back. Veloso brought the very best out of Keleva with a swerving free kick on the half hour mark, and two minutes later, it would force their second.
Taye Taiwo’s cross seemed harmless, but an unfortunate intervention from Zagreb defender Pivaric wrongfooted Keleva and nestled into the back of the net.
It could have been 3-0 two minutes before half time, but Andriy Yarmolenko failed to properly connect with a delivery from Brown in a gilt-edged position right in front of goal.
Shovkovski had his first save to make minutes after the restart, smothering a vicious attempt from substitute Duje Cop, who tested the Kiev keeper again moments later when chasing down his sloppy clearance.
But it proved to be something of an aberration, as the clear superiority of Kiev over the beleaguered visitors endured as the second half wore on.
Another good delivery from Husyev was scuffed by Yarmolenko, before the goalscorer took matters into his own hands with a testing drive that was tipped by Keleva.
The chances continued to fall Kiev’s way. Veloso blasted just wide, before Brown beat Keleva with a deft chip, only for Tonel to race back and hack clear off the line.
The goalmouth action dried up as the match entered its closing stages, and the hosts played out the last moments in confidence, knowing that the points were long safe.
Next up for Kiev is a trip to Portugal to face Porto, while Zagreb welcomes PSG to the Maksimir stadium. Both matches take place in three weeks.