An investigation found that “missiles fired due to human error”, President Hassan Rouhani said. He described the crash as an “unforgivable mistake”.
The military said the jet flew close to a sensitive site belonging to Iran’s Revolutionary Guards and was then mistaken for a hostile aircraft.
Iran previously rejected suggestions that it was responsible for the crash.
The downing of Ukraine International Airlines flight PS752, on Wednesday, came just hours after Iran carried out missile strikes on two airbases housing US forces in Iraq.
The strikes were a response to the killing of senior Iranian commander Qasem Soleimani in a US drone strike in Baghdad on 3 January.
Iran initially denied reports that one of its missiles had brought down the plane near the capital, Tehran. But pressure quickly mounted after Western intelligence officials said evidence pointed to Iranian involvement.
The Ukrainian flight, which was en route to Kyiv, came down near Imam Khomeini Airport shortly after take-off. Victims included dozens of Iranians and Canadians, as well as nationals from Sweden, the UK, Afghanistan and Germany.
What has Iran said?
On Saturday morning, an Iranian military statement read on state TV announced that it had struck flight PS752 with a missile by mistake.
The plane had flown near a “sensitive military centre” of the Revolutionary Guards, a force set up to defend the country’s Islamic system.
Because of heightened tensions with the US, Iran’s military “was at its highest level of readiness”, the statement said. “In such a condition, because of human error and in an unintentional way, the flight was hit,” it added.
The military apologised for downing the plane, saying it would upgrade its systems to prevent such “mistakes” in the future. It added that those responsible would be held accountable and prosecuted.
President Rouhani expressed his condolences. “[Iran] deeply regrets this disastrous mistake,” he said on Twitter.
Foreign Minister Javad Zarif apologised to the families of the victims but laid part of the blame on the US. “Human error at a time of crisis caused by US adventurism led to [this] disaster,” he said.
What happened before Iran’s announcement?
The statement marks a stark departure from the denials of recent days. As recently as Friday, Iran was insistent that the plane had not been shot down.
“The thing that is clear to us and that we can say with certainty is that this plane was not hit by a missile,” Iran’s Civil Aviation Organisation (CAOI) chief Ali Abedzadeh said.
On Thursday, government spokesman Ali Rabiei accused the US and its allies of “lying and engaging in psychological warfare” by speculating about the cause of the crash.
But as evidence pointing to a missile strike built, calls for a transparent investigation grew louder.
Video obtained by the New York Times appeared to show a missile streaking across the night sky over Tehran and then exploding on contact with a plane. About 10 seconds later a loud explosion is heard on the ground. The plane, ablaze, continues to fly.
On Thursday, TV images showed a mechanical digger helping to clear debris from the crash site, raising concerns that important evidence could have been removed.
In response, Iran promised a full investigation, inviting air accident agencies from Ukraine, Canada and the US to take part.
On Friday, Canada’s Foreign Minister Francois-Philippe Champagne warned Iran that “the world is watching”, saying that the families of those on board “want the truth”.
His warning came a day after Canadian Prime Minister Justin Trudeau said he had received intelligence from multiple sources indicating that the plane was shot down by an Iranian surface-to-air missile.