A 57-year-old man having dinner on the Airbus 340 became upset when a 29-year-old man sitting in front of him refused to raise his seat to the upright position, Blick.ch reports.
“The elder of the two was irritated,” Valerie Sprenger, a tour guide from Saint Gallen who was sitting four rows away, told the German-language website.
“As the young man did not respond to his yells, (the older man) struck him with the flat of his hand on the head,” said Sprenger, who was accompanying a tour group of 27 people to Beijing.
The younger man responded by shoving his assailant in the chest and soon they were wrestling on the floor, she said.
The incident occurred as the aircraft was flying over Russia near Moscow, about four and a half hours after take-off and with 200 passengers on board.
As the situation deteriorated the captain made the decision to return the plane to Zurich.
The head cabin steward attempted to mediate the quarrel but the older man attacked him, Sprenger said.
“Thank God, a strong passenger came to the rescue.”
A brief video on the Blick.ch website shows a chaotic scene with airline staff tending to a head injury received by the older combatant.
The injured man seemed to be “pretty drunk”, Sprenger said.
The cabin crew bound his hands with a cable and placed him in the back row of the plane where he cried out for an hour, she said.
Zurich cantonal police, who arrested the two combatants, confirmed that alcohol was involved in the case.
Not everyone was happy with the decision of the captain to return to Zurich, where the Swiss airline put up passengers in a hotel for the night.
The airline re-booked flights to Beijing for the passengers with other carriers.
A machine factory manager from Germany aboard the plane said he missed 20 meetings in China and he couldn’t understand why the two men couldn’t have been dealt with by Chinese authorities.
“You could have them both checked with the Beijing police,” he told Blick.ch.
“Then we would have not had all these troubles.”
UPDATE: Zurich justice authorities on Tuesday said the 57-year-old man who started the fight paid a fine and a portion of the administrative costs before being released from custody.
The amount of the fine was not released.
Since no-one filed assault charges, Zurich authorities charged the man with "disturbing public transport".