An Ethiopian Airlines co-pilot locked the pilot out of the cockpit, hijacked a plane bound for Italy and diverted it to Geneva, where he asked for asylum, officials said.
One passenger said the hijacker threatened to crash the plane if the pilot did not stop pounding on the locked door. Another said passengers were terrified "for hours" as the plane careened across the sky.
The Boeing 767-300 took off from the Ethiopian capital of Addis Ababa on an overnight flight to Milan and Rome, but an Ethiopian official said it sent a distress message over Sudan that it had been hijacked. Once the plane was over Europe, two Italian fighter jets and later French jets were scrambled to accompany it.
The plane, which was supposed to go to Milan first, landed in Geneva at about 6am local time (0500 GMT). Officials said no one on the flight was injured and the hijacker was taken into custody after surrendering to Swiss police.
"The pilot went to the toilet and he (the co-pilot) locked himself in the cockpit," Geneva airport chief executive Robert Deillon told reporters. "(He) wanted asylum in Switzerland."
It was not immediately clear why the co-pilot, a 31-year-old Ethiopian man, chose Switzerland, where voters recently demanded curbs on immigration. Italy, however, has a reputation among many Africans as not being hospitable to asylum seekers.
Ethiopian Airlines is owned by Ethiopia's government, which has faced persistent criticism over its rights record and its alleged intolerance of political dissent. Geneva police said the co-pilot claimed he felt threatened in Ethiopia.
An Italian passenger on board, Francesco Cuomo, told the Italian news agency ANSA that some passengers woke up shortly after midnight when the plane started to "bounce".
"The pilot was threatening to open the cockpit door and tried to knock it down without succeeding," said Mr Cuomo, a 25-year-old economist.
"At this point, a message was transmitted by the loudspeakers in poor English, but the threat to crash the plane was clearly understood," he added.
Oxygen masks then came down, he said, making everyone on the plane very tense.
"We had no clue about the hijacking, but got scared when the plane suddenly started diving, it seemed like it was falling from the sky," Italian passenger Diego Carpelli, 45, told the Corriere della Sera newspaper. Mr Carpelli was returning to his native Rome from a holiday in Kenya with his family.
"Someone in an intimidating tone said we should put on our oxygen masks," Mr Carpelli said, adding that he was terrified for the rest of the flight.
Ethiopia's communications minister, Redwan Hussein, named the alleged hijacker as Hailemedhin Abera and said the man had worked for Ethiopian Airlines for five years. He said Ethiopia will seek his extradition.
"His action represents a gross betrayal of trust that needlessly endangered the lives of the very passengers that a pilot is morally and professionally obliged to safeguard," Mr Redwan said.
Mr Redwan said the plane was carrying 200 people, including seven crew members. They included 139 Italians, 11 Americans, 10 Ethiopians, five Nigerians and four French citizens.
Swiss authorities at first thought the Ethiopian plane just wanted to land in Geneva for an emergency refuelling before realising it was being hijacked, Geneva police spokesman Eric Grandjean said.
A few minutes after landing in Geneva, the co-pilot left the cockpit using a rope, then went to police forces close to the aircraft and "announced that he was himself the hijacker", Mr Grandjean said.
Police escorted the plane's passengers out one by one, their hands over their heads, from the taxied plane to waiting vehicles. Geneva airport was closed down for about two hours.
Geneva prosecutor Olivier Jornot said the co-pilot will be charged with taking hostages, a crime punishable by up to 20 years in prison. The Swiss federal prosecutors' office said later that it had taken over the case.
Mr Jornot said the hijacker's chances of winning asylum were slim.
"Technically there is no connection between asylum and the fact he committed a crime to come here," he said. "But I think his chances are not very high."
Both Italy and Switzerland, however, do not extradite those who may face the death penalty at home.
The leader of Ethiopia's opposition Blue party, Yilikal Getnet, said he believed the hijacker was trying to make a statement about the political situation in Ethiopia, where the late strongman Meles Zenawi's party has dominated politics since the 1990s.
"I think he took the measure to convey a message that the ... government is not in line with the public," he said.
Human Rights Watch says Ethiopia's human rights record "has sharply deteriorated" over the years. The rights group says authorities severely restrict basic rights of freedom of expression, association and assembly. The government has also been accused of targeting journalists, opposition members and minority Muslims.
There have been at least eight hijackings by Ethiopians or involving Ethiopian planes in the last 25 years.
The deadliest came in 1996, when hijackers stormed the cockpit of a flight from Ethiopia to Ivory Coast via Kenya, demanding that the plane go to Australia. The plane ran out of fuel and crashed off the island nation of Comoros, killing 125 of the 175 people aboard.