The plane's second-in-command, who was not carrying a weapon, took control of the plane when the pilot left the cockpit to use the toilet. After landing, he left the aircraft via a cockpit window, without harming passengers or crew, police spokesman Pierre Grangean told a news conference.
"Just after landing, the co-pilot came out of the cockpit and ran to the police and said, 'I'm the hijacker.' He said he is not safe in his own country and wants asylum," Grangean said.
As passengers left the plane, which was parked near the end of the runway, they were checked by police as they held their hands on their necks, a Reuters witness said.
Ethiopia, sub-Saharan Africa's second most populous country, is among the continent's fastest growing economies. The opposition and rights campaigners accuse the government of stifling dissent and torturing political detainees.
But it is rare for government officials and employees - Ethiopian Airlines is run by the state - to seek asylum. The last senior official to do so fled to the United States in 2009.
Flight ET702 departed the Ethiopian capital Addis Ababa on Sunday evening and was bound for Rome. The plane was hijacked at about 0330 GMT while over northern Italy, Grangean said. It landed at Geneva at 6:02 a.m. (0502 GMT).
He said the co-pilot, an Ethiopian born in 1983, locked the flight deck door when the pilot went to the toilet. He then asked to refuel at Geneva, landed the plane, climbed down on an emergency exit rope from a cockpit window, and gave himself up.
Robert Deillon, CEO of Geneva airport, said air traffic controllers learnt the plane had been hijacked when the co-pilot keyed a distress code into the aircraft's transponder,
"There is ... a code for hijack. So this co-pilot put in the code for 'I just hijacked the aircraft'," he said. As the plane was over Italy at the time, two Italian Eurofighters were scrambled to accompany it, he said.
Ethiopian Airlines said in a short statement that the Boeing aircraft had been "forced to proceed" to Geneva.
State-run Ethiopian television said there were 193 passengers on board the Boeing aircraft, including 140 Italian nationals.
The last senior Ethiopian official to seek asylum was Ermias Legesse, a state minister of information who fled to the United States in 2009.
The brief drama in Geneva on Monday morning caused the cancellation of some short-haul flights and some incoming flights were diverted to other airports. Hundreds of passengers booked on disrupted flights sought to change their tickets.
In an apparent recording of a radio communication between the Ethiopian plane and air traffic control posted on social media site Twitter, a demand for asylum was made.
"We need asylum or assurance we will not be transferred to the Ethiopian government," the voice in the recording, apparently the co-pilot, said.
Reuters could not independently verify the authenticity of the recording.
A flight tracking app for mobile devices showed the flight circling over the Swiss city several times before landing.
Ethiopian nationals and the Horn of Africa country's flag carrier have been involved in several hijackings in the past.
In 1993, an Ethiopian used a gun hidden in his hat to hijack a German passenger jet bound for New York. He was later sentenced to 20 years in a U.S. prison.
Two years later, police in Greece overpowered an Ethiopian hijacker who held a knife to the throat of an Olympic Airways stewardess and demanded political asylum.
At least 50 people were killed when a hijacked Ethiopian Airlines passenger jet crashed in the Indian Ocean in 1996.