Porto's point takes them to 10 points in the group and guarantees their progress after a game of few clear-cut chances which leaves the hosts with little chance of progressing.
Porto's confidence was not too evident in the cagey opening exchanges, with Kiev pressing forward and forcing a free-kick within the first minute which was comfortably cleared by Nicolas Otamendi.
Porto had their first chance in the ninth minute when Yevhen Khacheridi's foul on James Rodriguez led to a Joao Moutinho free-kick which was headed on by Abdoulaye Ba and blocked in the box.
In a first half of few clear-cut chances, Porto almost grabbed the lead in the 35th minute when Maksym Koval tipped a Jackson Martinez header round the post after a pin-point cross by Rodriguez.
Taye Taiwo fired wide for the hosts two minutes later but Porto were beginning to look more dangerous and Koval was forced into action again in the 38th minute when he saved a volley from Danilo.
Silvestre Varela had the first chance of the second half for Porto with a left-foot shot from the edge of the area in the 50th minute, which flashed wide of Koval's goal.
Porto keeper Helton was then forced into action as he saved a shot from Andriy Yarmolenko, and as the game belatedly sprang into life, Koval caught an effort from Danilo at the other end.
Koval then denied Rodriguez and from the resulting counter-attack Artem Milevskiy hit a shot from 18 yards which was well saved by Helton.
Ognjen Vukojevic fired over from long-range for the hosts, then a free-kick from the dangerous Moutinho flashed wide and moments later a Rodriguez shot in the box was blocked by Taiwo.
Brown Ideye should have done better with a 72nd minute header which sailed over Da Silva's bar, and Porto's Lucho Gonzalez was not far away with a 25-yard drive which tested Koval at the other end.