The Boeing 767-300 plane with 202 passengers and crew had taken off from the Ethiopian capital of Addis Ababa and landed in the Swiss city 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 police.
It wasn't immediately clear why the co-pilot, an Ethiopian man born in 1983 whose name wasn't released, wanted asylum. It also was unclear why he chose Switzerland which, unlike Italy, isn't a member of the 28-nation European Union and where voters recently demanded curbs on immigration.
Ethiopian Airlines is owned by Ethiopia's government, however, which has faced persistent criticism over its rights record and its alleged intolerance of political dissent.
The plane first sent a distress message while flying over Sudan's airspace on its way to Rome, Ethiopia's communications minister said.
"From Sudan all the way to Switzerland, the co-pilot took control of the plane," said the minister, Redwan Hussein. He didn't elaborate but added that the pilot was Italian.
Passengers on the plane were unaware at the time that it had been hijacked, officials said. Even local authorities at first thought the Ethiopian plane just wanted to land in Geneva for an emergency refueling before realizing it was hijacked, Geneva police spokesman Eric Grandjean said.
Two Italian fighter jets were scrambled to accompany the plane, Geneva airport chief executive Robert Deillon told reporters.
The co-pilot took control of the plane when the pilot ventured outside the cockpit, Deillon said.
"The pilot went to the toilet and he (the co-pilot) locked himself in the cockpit," Deillon said. "(He) wanted asylum in Switzerland."
A few minutes after landing in Geneva, the co-pilot left the cockpit using a rope, then went to the police forces close to the aircraft and "announced that he was himself the hijacker," 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 to other flights for about two hours after the hijacked plane landed.
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 prosecutor's office will take over the investigation.
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 plane was scheduled to stop in Milan before its final destination in Rome. Milan-bound passengers were put on buses from Geneva to the northern Italian city, while those headed for other destinations were put on alternative flights, Geneva airport spokesman Bertrand Staempfli said. The plane was still in Geneva on Monday afternoon and it wasn't clear when it would leave, he said.
The leader of Ethiopia's opposition Blue party, Yilikal Getnet, said he believes 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 and people are not impressed by what the government says," 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 and the government has been accused of targeting journalists, opposition members and minority Muslims.
There have been numerous hijackings by Ethiopians, mostly fleeing unrest in the East African nation or avoiding returning home - and some have involved the national carrier.
In 1994, Ethiopian Airlines suffered two hijackings at the hands of passengers who demanded to be flown to Europe, according to the Aviation Safety Network, which tracks aviation hijackings.
The following year, five armed men seized an Ethiopian Airlines jetliner and demanded the plane be flown to Greece and then Sweden. It was instead diverted to Al Obeid, 300 miles (480 kilometers) west of Khartoum, Sudan.