The co-pilot had locked his captain from the cockpit, commandeered the plane, and headed for Geneva, where he asked for political asylum, although authorities say a prison cell is more likely.
One passenger said the hijacker threatened to crash the plane if the pilot didn't stop pounding on the locked door. Another said he was terrified "for hours" Monday as the plane careened across the sky.
The Boeing 767-300 took off from the Ethiopian capital on an overnight flight to Milan and then Rome, but it sent a distress message over Sudan that it had been hijacked, an Ethiopian official said. Once the plane was over Europe, two Italian fighter jets and later French jets were scrambled to accompany it.
Italian Air Force Col. Girolamo Iadiciccio said the order to scramble came from NATO to ensure the plane didn't harm national security and didn't stray off-route.
The plane landed in Geneva at about 6 a.m. (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 wasn't immediately clear why he chose Switzerland over Italy. Swiss voters recently demanded curbs on immigration and Italy 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.
The alleged hijacker was identified as Hailemedhin Abera, a 31-year-old Ethiopian man who had worked for Ethiopian Airlines for five years and had no criminal record, Ethiopia's communications minister, Redwan Hussein, said, adding that Ethiopia will seek his extradition. Geneva police said he claimed he felt threatened at home.
"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," Redwan said.
One passenger, Francesco Cuomo, told the Italian news agency ANSA that he and other passengers woke up shortly after midnight when the plane started to "bounce."
"The pilot was threatening (the hijacker) to open the cockpit door and tried to knock it down without succeeding," said Cuomo, a 25-year-old economist from Italy.
"At this point, a message was transmitted by the loudspeakers in poor English, but the threat to crash the airplane was clearly understood," he added.
Oxygen masks then came down, he said, making everyone on the plane very tense.
"I thought that the co-pilot had gone nuts," Cuomo told the Corriere della Sera newspaper, adding that "there was a lake below us, and so we suspected that we weren't landing in Milan."
"I realized we weren't in Italy any longer when I recognized the Alps," he said. "When we started circling above Geneva, we were really afraid."
Another Italian passenger, 45-year-old Diego Carpelli, was returning to his native Rome from a vacation in Kenya with his family and said they "had no clue about the hijacking but got scared when the plane suddenly started diving. It seemed like it was falling from the sky."
"Someone in an intimidating tone said we should put on our oxygen masks," he told the Corriere della Sera newspaper, adding that he was terrified for the rest of the flight.
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 initially thought the Ethiopian plane wanted to land in Geneva for emergency refueling before realizing it was being hijacked, Geneva police spokesman Eric Grandjean said.
Minutes after landing in Geneva, the co-pilot used a rope to climb out of the cockpit, then went to police forces and "announced that he was himself the hijacker," Grandjean said.
Police escorted the plane's passengers out of the plane one by one, their hands over their heads, and took them 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 in Switzerland. In Ethiopia, he could face up to 25 years in prison for the hijacking.
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."
The Swiss federal prosecutors' office took over the case later Monday.
Passengers going to Milan were put on buses, while those going to Rome and elsewhere got alternative flights home. The plane remained at Geneva airport and officials said they did not know when it would be removed.
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.
"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.
Moulson reported from Berlin. Associated Press writers Frank Jordans in Berlin; Rodney Muhumuza in Kampala, Uganda; Elias Meseret in Addis Ababa, Ethiopia; Frances D'Emilio in Rome; Jennifer Clark in Milan and Carley Petesch in Johannesburg contributed to this report.