International prosecutors say Malaysia Airlines flight MH17 was downed over eastern Ukraine in 2014 by a Buk missile that had come from Russia.
They also narrowed down the area it was fired from to a field in territory controlled by Russian-backed rebels.
All 298 people on board the Boeing 777 died when it broke apart in mid-air flying from Amsterdam to Kuala Lumpur.
Russia says it cannot accept the findings as the final truth, saying no Russian weapons were taken to Ukraine.
“Based on the criminal investigation, we have concluded that flight MH17 was downed by a Buk missile of the series 9M83 that came from the territory of the Russian Federation,” chief Dutch police investigator Wilbert Paulissen told a news conference on Wednesday.
MH17 Malaysia plane crash: What we know
MH17 crash: The 298 who perished
The missile had been taken from Russia to rebel-held Ukraine in the morning of 17 July, when the plane was shot down, and the launcher was taken back to Russia the next day, he said.
The Dutch-led Joint Investigation Team (JIT) has also narrowed the missile launch site down to a specific field near the village of Pervomaiskyi, which was then in rebel hands.
In an interview with the BBC, Kremlin spokesman Dmitry Peskov said there was “nothing to accept or deny”, as he understood these were preliminary findings.
“We cannot accept as final truth of what they say. I bet you haven’t seen any proof of what they say,” he told the Hardtalk programme, adding: “We know the devil is in the detail, and we are still missing lot of the detail.”
But he appeared to rule out that the missile came from Russia: “We’ve been ruling out the fact that any Russian weapons were shipped to Ukraine, any Russian army members, any Russian troops were inside Ukraine. And we’re still ruling out that possibility.”
Ukraine’s President Petro Poroshenko hailed the inquiry’s initial findings, saying: “We have solid proof of who is to blame for this dreadful crime.”
Dutch Prime Minister Mark Rutte called the preliminary findings “an important step on the road to the ultimate goal: finding and prosecuting the perpetrators”, whereas the Malaysian Prime Minister Najib Razak said his country sought “firm action” so that those responsible “will be brought to justice”.
Who gave the order?
Justice is exactly what the relatives of the victims want.
“Apart from wanting to know exactly what weapon was used and where it was fired from, we also want an answer as to where we go from here,” said Evert van Zijtveld, who lost his 18-year-old son Robert-Jan and daughter Frederique, 19, in the tragedy.
“We want to see the perpetrators caught and put on trial,” he told the AFP news agency.
JIT prosecutors have established the identities of about 100 people “linked to the crash or the transport of the Buk” missile, but they are yet to determine who could be held criminally responsible.
They will need to establish who gave the order to move the missile launcher into eastern Ukraine, and where the order for it to be fired came from. All of this will take time, they say.
Prosecutors played recordings from intercepted phone calls during their news conference.
They said witnesses reported seeing the missile launcher move from Russia into Ukraine and presented pictures and videos.
The launch site was pinpointed by “many witnesses”, prosecutors said.
A long, frustrating quest – Richard Galpin, BBC News
Near the village of Hrabove, where a large section of the Boeing 777 had come down, we soon found bodies scattered in the fields and a pile of suitcases by the side of the road. A child’s diary lay open on the ground.
The intense heat from the crash had melted part of one of the wings and a section of human backbone lay in the ashes.
For the families of the 298 people killed when MH17 was shot down, today’s report is a step forward in their long, frustrating quest to see those responsible brought to justice.
The confirmation that the missile launcher had been sent from Russia implies that Russian soldiers could have been involved at least in the transportation and possibly in the firing of the rocket.
But prosecutors admit they do not know who gave the order to shoot the plane down.
And while there is a determination to prosecute those responsible, it is very unclear that this will ever be possible, particularly if it would require Moscow to hand over suspects.
Separatist rebels have denied they were involved.
“We never had such air defence systems, nor the people who could operate them,” Eduard Basurin, military deputy operational commander at the rebel Donetsk People’s Republic, told the Interfax news agency.
“Therefore we could not have shot down the Boeing [flight MH17].”
An inquiry by the Dutch Safety Board last year found that a Russian-made Buk missile hit the plane but was not specific about where the launch site could have been.
Earlier this week, Russia said it had radar data showing that the missile was not fired from rebel-held territory.
The JIT does not yet have access to that data, prosecutors said.
Russia’s changing story
In the two years since MH17 was shot down, Russian officials have presented several theories about what happened.
21 July 2014: Four days after the tragedy, Russia’s defence ministry presented satellite photos and other images suggesting it was downed by a Ukrainian surface-to-air Buk missile or a Ukrainian military jet
June 2015: Russia’s Investigations Committee named a “key witness” – a Ukrainian “aircraft ordnance technician” – who claimed that the Boeing was downed by a Ukrainian Su-25 fighter
October 2015: Buk missile producer Almaz-Antey said that the plane was indeed downed by a Buk, but an old one – which Russia no longer had in its arsenal
September 2016: Russia’s defence ministry released what it said were radar data suggesting MH17 was shot down by a missile, but not one fired by Russian-backed rebels