The 6,825-tonne Sewol ferry sank off the southwest coast in April 2014. A total of 295 bodies were recovered, but nine remained unaccounted for when divers finally called off the dangerous search of the sunken vessel last November.
The Sewol lies 40 metres down on the sea bed and bringing it to the surface represents a substantial technical challenge. The salvage operation is scheduled to begin in September and take as long as one and a half years.
Shanghai received good marks for its experience in salvaging sunken vessels, including a cruise ship that sank in China's Yangtze River with the loss of more than 400 lives last month, it said.
The ministry said it would talk with the second candidate - a consortium led by China's state-run China Yantai Salvage - if negotiations with Shanghai fail.
More From This Section
Shanghai offered to lift the ferry for 85.1 billion won (USD 74 million) by using a frame built with metal beams on the sea floor instead of drilling holes into its side.
The overloaded Sewol was carrying 476 people, including 325 students from the high school in Ansan, when it sank. Only 75 students survived.
Strong currents and muddy waters at the site of the sunken vessel greatly hampered the search efforts last year, leaving two divers dead and dozens injured.
The families of those still missing had led a campaign for the ferry to be brought to the surface.
The shock accident - blamed on the ship's illegal redesign and overloading left unchecked by regulators - prompted calls to overhaul the nation's lax safety standards and tackle deep-rooted corruption.