All 176 people on board a Ukrainian Boeing 737 died when it crashed shortly after take-off from Iran's main international airport, officials have said.
Ukrainian Prime Minister Oleksiy Honcharuk said there were 167 passengers and nine crew members on the Ukraine International Airlines flight to Kiev.
Iranian state television said flight PS752 came down due to what it described as "technical problems" after leaving Imam Khomeini Airport in Tehran.
The plane's black box has been recovered, but the head of Tehran's civil aviation organisation said it will not be giving it to aircraft manufacturer Boeing.
Ali Abedzadeh said it was not clear which country Iran would send the box to so that its data could be analysed, the semi-official Mehr news agency in Iran reported.
Footage showed the wreckage of the plane and smouldering engine parts strewn across a field as rescue workers with face masks recovered bodies of the victims.
Ukraine's Foreign Minister Vadym Prystaiko said 82 Iranians and 63 Canadians were on board.
Detailing the casualties on Twitter, he also said there were 11 Ukrainians, including nine crew, 10 from Sweden, four passengers from Afghanistan, three from Germany and three from Britain.
?????? ??? ?????? ???????? ?????????? ???? ????? ?????????? ???????? ? ?????????? #PS752:
???? - 82;
?????? - 63;
??????? - 2 + 9(??????);
?????? - 10;
?????????? - 4;
??? - 3;
?????? ???????? - 3.
??????????? ???? ?????????. ?????????? ????? ????????? ?????????????.— Vadym Prystaiko (@VPrystaiko) January 8, 2020
Twenty-four of the victims were under the age of 16, including a one-year-old child.
The airline said most passengers were in transit and due to connect to other flights on arrival.
The accident occurred as confrontation between Iran and the United States threatens to trigger a wider conflict in the Middle East.
The Ukrainian embassy in Tehran originally said engine failure was the cause but a later statement omitted any mention of this.
It said in a second statement that the causes had not been disclosed and that any previous comments were not official.
Asked at a briefing in Kiev if the plane could have been downed by a missile, Mr Honcharuk cautioned against speculation until the results of an investigation were known.
Ukraine's President Volodymyr Zelenskyy said he had instructed criminal proceedings to be opened over the crash and that the country will test the airworthiness of its entire civilian fleet.
In a statement, he added: "I keep all measures on personal control. I very much ask everyone to refrain from speculation and putting forward untested versions of the disaster before the official announcements."
Speaking while on an official visit in Oman, he offered his condolences to the relatives of those killed and cut short the trip to return to the Ukrainian capital.
The airline said it was doing everything possible to find out the cause of the crash and that it had suspended all flights to Tehran "indefinitely".
It said the plane had passed its last technical check on January 6th and that there was nothing wrong with it.
A Boeing statement said: "This is a tragic event and our heartfelt thoughts are with the crew, passengers, and their families.
"We are in contact with our airline customer and stand by them in this difficult time. We are ready to assist in any way needed."
Iran's state-run news agency IRNA reported the pilot lost control when a fire broke out in one of the engines - quoting Qassem Biniaz, a spokesman for Iran's road and transport ministry.
An investigation team is at the site of the crash on farmland in the southwestern outskirts of Tehran.
Pirhossein Koulivand, head of Iran's emergency services, told state television the plane was on fire when emergency services first arrived at the crash scene.
"The fire is so heavy that we cannot (do) any rescue... we have 22 ambulances, four bus ambulances and a helicopter at the site," he said.
Flight data from the airport showed a three-year-old Boeing 737-800 NG took off on Wednesday morning, then stopped sending data almost immediately afterwards, according to website FlightRadar24.
"Our task is to establish the cause of the crash of the Boeing and provide all necessary help to the families of the victims," said Dmytro Razumkov, Ukraine's parliament speaker, in a statement on Facebook.
The crash came hours after Iran launched a ballistic missile attack targeting two bases in Iraq housing US and coalition forces in retaliation for the killing of Revolutionary Guard General Qassem Soleimani.
Commercial airlines - including Air Canada, China Airlines, Vietnam Airlines, Norwegian Air Shuttle, Malaysia Airlines and Singapore Airlines - have begun rerouting flights crossing the Middle East to avoid possible danger amid the escalating tensions.
British Airways said a small number of its flights would be affected by re-routing, without elaborating.
Australian carrier Qantas said it was altering its routes to avoid Iran and Iraq airspace until further notice.
Germany's flagship carrier Lufthansa said it would resume flights to Tehran on Thursday after earlier cancelling its daily flight to the Iranian capital due to the situation in the country.
It said Tehran Airport was open and there were no security restrictions for the approach or the surrounding area.
Air France, which has also suspended flights, said in a statement: "Flight plans are adjusted in real time according to the decisions of the French and regional authorities, throughout the world, in order to ensure the highest level of flight safety."
Russia's aviation authority told its air carriers to avoid flights in the airspace of Iraq, Iran, the Gulf and the Gulf of Oman.
United Arab Emirates-owned budget airline flydubai said it had cancelled a scheduled flight on Wednesday from Dubai to Baghdad, but was continuing flights to Basra and Najaf.
"The safety of our passengers, crew and aircraft is our number one priority and will not be compromised," Emirates airline said, announcing flights between Dubai and Baghdad were cancelled.
At least two Kazakh airlines - Air Astana and SCAT - were reportedly considering rerouting or cancelling their flights over Iran following the plane crash.
Qatar Airways, however, said its flights to Iraq were operating normally.
"The safety of our passengers and employees is of the highest importance, and we continue to closely monitor developments in Iraq," the airline said.
Those looking for information about passengers can call 00-38-044-581-50-19.
Main image: Debris is seen from a plane crash on the outskirts of Tehran, Iran | Image: Mohammad Nasiri/AP/Press Association Images