Censor.NET reports citing EUobserver.
Almost two-thirds of the senate voted for ratification, with opposition coming mostly from far-left and far-right parties.
It was already anticipated that a majority of senators would vote in favor, following a debate last week.
The vote of the centre-right Christian Democratic Party was crucial, after they had opposed ratification in the lower house of the parliament.
The vote was attended by caretaker prime minister Mark Rutte (Liberals) and foreign affairs minister Bert Koenders (Labor), for whom the outcome must come as a relief.
The European Commission was quick to respond. Just minutes after the vote, it sent a press release with a comment from EU commission president Jean-Claude Juncker, who during the referendum campaign had said a No vote would trigger a "continental crisis".
"Today's vote in the Dutch senate sends an important signal from the Netherlands and the entire European Union to our Ukrainian friends: Ukraine's place is in Europe," Juncker said on Tuesday.
Two years ago, the two houses of the Dutch parliament had already approved ratification. But in October 2015, a group of citizens used a new Dutch law that allowed them to force the government to hold a non-binding referendum about a recently passed bill. The vote was held in April 2016, and the Ukraine treaty was rejected by 61.1 percent of those who showed up to vote - with a low turnout of 32.2 percent. Although the referendum was non-binding, the Dutch political establishment decided they needed to "take the outcome into account". Centre-right Liberal prime minister Rutte did not want to flat-out ignore the results, or push ratification through, and set out to find a third option.
Related materials: Ukraine - EU