So far, 368 people have been rescued, local reports say.
A major rescue operation is under way, involving 34 naval, coastguard and civilian ships, and 18 helicopters.
The ferry, carrying mainly school students, was travelling from the port of Incheon, in the north-west, to the southern resort island of Jeju.
Images showed the ferry listing at a severe angle and then later largely submerged, with only a small part of its hull visible.
Pictures showed rescue teams balanced on the sinking hull pulling teenagers from cabin windows. Some of their classmates jumped into the sea as the ship went down.
Reports suggest some of those rescued were picked up by nearby commercial vessels.
Navy divers were now searching the scene for those unaccounted for, officials said.
One body, of a female crew member, had been recovered from the ship, the coastguard said. Another person is reported to have died after being rescued.
Thirteen people were hurt, Yonhap news agency said.
One student told local media her friends became trapped.
“Currently, I am in the middle of being rescued. At the time, the ship was turning on its side, and none of us were moving as we were told not to move as it was dangerous,” the unnamed student said.
“So, I am not well aware of the situation, but I am told that my friends and other friends could not escape as the passage was blocked. It seems that there are many students who could not get out as the passage was blocked by water.”
It is not yet clear what caused the incident, but witnesses described hearing an impact, before the ship listed and quickly sank.
One passenger told the YTN news channel: “We heard a big thumping sound and the boat stopped.
“The boat is tilting and we have to hold on to something to stay seated,” the passenger said.
Another passenger said the ship was “shaking and tilting”, with people tripping and bumping into each other.
Weather conditions were described as fine.
News agencies said the ferry had sent out a distress signal about 20km (12 miles) off the island of Byungpoong at about 09:00 local time (00:00 GMT).
Angry parents have gathered at the school in Incheon to demand answers, reports the BBC‘s Lucy Williamson in Seoul.
Earlier reports put the number of passengers on the ferry at about 350. The vessel is reported to have a capacity of up to 900 people.