Spain were made to pay for a host of wasted chances as Ukraine inflicted their first defeat in nearly two years.
Leeds forward Rodrigo spurned two headed chances as Ukraine goalkeeper Georgi Bushchan continually frustrated the former world champions in the stadium where they won Euro 2012.
Spain had 21 shots in total but Ukraine needed just one to score in Kiev.
They now lead Group A4 by just a point from both Ukraine and Germany, who drew 3-3 with Switzerland.
About 15,000 fans were allowed in to watch the Nations League game, which was dominated by Spain.