The Sanchi tanker, carrying 136,000 tonnes of Iranian oil worth $60m (£44m), caught fire after the crash and has been burning for nearly 24 hours.
China’s ministry of transport said the crew – 30 Iranians and two Bangladeshis – were missing, with rescue efforts hampered by the fierce blaze.
“Sanchi is floating and burning,” the ministry said in a statement.
“There is an oil slick and we are pushing forward with rescue efforts.”
The 21-strong crew of the cargo ship were rescued, the ministry said.
Poor weather and plumes of smoke rising from the tanker are making rescue attempts difficult, Mohammad Rastad, the head of Iran’s Ports and Maritime Organisation, told Iranian television.
It is the first major accident involving an Iranian oil tanker since international sanctions limiting the country’s oil exports were lifted in January 2016.
“This is a big spill,” oceanographer Dr Simon Boxall told the BBC.
“Potentially the entire load, 136,000 tonnes, could end up in the ocean, and that would put this in the top 10 spills of all time, so it is significant,” he said.
“The only positive side is that, at the moment, the winds are keeping the oil offshore. The chances of it reaching the shore are fairly slim. But we are looking at a lot of oil here and the water depth in that area is only about 50m to 60m, so in the immediate area it will have a dramatic impact.”
The collision happened on Saturday night, about 160 nautical miles (296 km) off the coast of Shanghai.
Eight Chinese ships have been sent to carry out the search-and-rescue operation, China’s official Xinhua news agency reported.
South Korea has also sent a coastguard ship and a helicopter to aid the relief effort.
The tanker had been sailing to Daesan in South Korea from Kharg Island in Iran, according to Reuters ship tracking data. It was carrying a cargo equivalent to slightly under a million barrels.
The Hong Kong-registered cargo ship, CF Crystal, was carrying 64,000 tonnes of grain from the US to Guangdong province in southern China. Its rescued crew were all Chinese nationals, the country’s transport ministry said. (Courtesy BBC)