A massive rescue operation involving divers was launched after the Sewol, with 462 people on board, capsized 12 miles off the coast.
A total of 175 people were saved, 55 of them injured, with the dead including two pupils and a female crew member.
Survivors said passengers had been told to stay put, raising fears many were left been trapped inside.
Kim Seong-mok said he was certain many people were trapped in the ferry as water had quickly rushed in and the severe tilt of the vessel kept them from reaching the exits.
He said the ferry operator made an announcement asking passengers to wait and not move from their places.
He said he didn’t hear any announcement telling passengers to escape.
Some people urged those who could not get out of the ferry to break windows.
Those rescued spoke of hearing a “loud impact” before the ship started to roll onto its side.
Cha Eun-ok, who was on deck taking photographs, said: “It was fine. Then the ship went ‘boom’ and there was a noise of cargo falling.”
She said: “The on-board announcement told people to stay put... people who stayed are trapped.”
The rescue operation included 16 divers, 140 coastguard staff, at least 87 vessels and 18 helicopters.
Rescuers clambered over the sides of the stricken ferry, pulling out passengers.
But the 480ft long (146m) ship then overturned and continued to sink slowly, and within a few hours only its blue-and-white bow stuck out of the water before it sank in some 121ft of water (37m).
The divers initially failed to get inside because the current was too strong.
Lim Hyung-min said he had joined other pupils in donning life jackets and jumping into the water to swim to a nearby rescue boat.
He said: “As the ferry was shaking and tilting, we all tripped and bumped into each another.”
After jumping, he said the sea “was so cold...I was hurrying, thinking that I wanted to live.”
Survivors were taken to nearby Jindo island, where medical teams wrapped them in blankets and checked them for injuries.
Those rescued included a five-year-old girl, who was taken to hospital alone.
The ferry had left Incheon, near Seoul, on the country’s north west coast on Tuesday night for a 14-hour journey to the tourist island of Jeju, 60 miles south of the mainland.
The pupils, thought to be mainly 16 and 17-year-olds, were from Danwon High School in Ansan, near Seoul, who were on a four-day trip to the resort, which is a popular destination for school visits.
It sank three hours from its destination, off South Korea’s south west coast, after sending a distress call.
Those on board included 325 high school pupils, 15 teachers, 89 other passengers and 30 crew.
The ship, which travels twice a week between Incheon and Jeju, was built in Japan in 1994 and could carry up to 921 people, 180 vehicles and 152 shipping containers.
The water temperature in the area was about 12C, which can cause signs of hypothermia after one to two hours’ exposure.
A member of the crew of a local government ship involved in the rescue said the area was free of reefs or rocks and the cause was likely to be some sort of malfunction on the vessel.
There were reports of the ferry having veered off its course, but coordinates of the site of the accident provided by port authorities indicated it was not far off the regular shipping lane.
It is feared the sinking will be one of South Korea’s biggest ferry disasters since 1993 when 292 people died.