The referendum turnout was low, 32.2%, but above the 30% threshold for the vote to be valid. The deal was rejected by 61.1% of votes compared with 38% in favor.
PM Mark Rutte said the government may have to reconsider the deal, although the vote is not binding.
Ukrainian President Petro Poroshenko insisted his country would “continue our movement towards the EU”.
The vote was widely seen in the Netherlands as a test of public opinion towards the EU.
It was triggered by an internet petition begun by Eurosceptic activists that attracted some more than 400,000 signatures.
The result creates a headache for the Dutch government as the Dutch parliament ratified the EU association agreement with Ukraine in 2015. All the other 27 EU member states have already ratified the deal.
“My view is that if the turnout is more than 30%, with such a victory for the <<No>> camp, ratification cannot go ahead without discussion,” Mark Rutte said in a televised reaction.
Geert Wilders, who leads the anti-EU and anti-Islam Freedom Party, said the result was the “beginning of the end for the EU”.
The vote comes less than three months before British citizens decide in their own referendum whether to leave the EU altogether.
The Russian government was vehemently opposed to the EU deal with Ukraine and was widely thought to have pressed then-President Viktor Yanukovych to reject it in November 2013.
Viktor Yanukovych’s decision prompted protests in Kiev that ultimately led to his downfall.
The Ukrainian president stressed the non-binding nature of the vote.
“I am sure that strategically this event is not an obstacle on Ukraine’s path towards Europe,” Interfax-Ukraine news agency reported Petro Poroshenko as saying.
One of the Dutch Eurosceptics behind the referendum, Thierry Baudet, had warned the government to heed a “No” vote on the deal.
“It is not good for the Netherlands, not good for Europe and not good for Ukraine,” he said on TV on the eve of the vote.
EU Commission President Jean-Claude Juncker had described the stakes in the run-up to the vote as being high, warning that a “No'” vote could trigger a wider crisis in the 28-member bloc.
The US House Ethics Committee has voted to release its report on former Republican Representative…
ABC News has agreed to pay $15 million to President-elect Donald Trump to settle a…
South Korea’s parliament has voted to impeach President Yoon Suk Yeol over his failed attempt…
Israeli war planes have carried out more than 100 air strikes in Syria on December…
President-elect Donald Trump has threatened to impose 100% tariffs on the BRICS countries if they…
Syrian troops have withdrawn from the city of Aleppo following an offensive by rebels opposed…