The Sanchi tanker, a Panama-registered vessel carrying 136,000 tonnes of Iranian oil, caught fire after the crash.
China’s Ministry of Transport said the missing people are its crew – 30 Iranians and two Bangladeshis.
The 21-strong crew of the cargo ship had been rescued, it said.
“Sanchi is floating and burning as of now. There is an oil slick and we are pushing forward with rescue efforts,” the ministry said.
An image published by state broadcaster CGTN showed huge plumes of smoke rising from the tanker.
Search and rescue operation under way as 32 went missing after two vessels collided off the east coast of China; A Panama registered oil tanker is on fire pic.twitter.com/RslNE08cyd
— CGTN (@CGTNOfficial) January 7, 2018
The collision happened around 160 nautical miles (296 km) off the coast of Shanghai.
Eight Chinese ships have been sent for the search and rescue operation, China’s official Xinhua news agency said.
South Korea has also sent a coast guard ship and a helicopter to aid the relief effort.
The tanker had been sailing to Daesan, South Korea from Kharg Island, Iran, according to Reuters ship tracking data.
It was carrying a $60m (£44m) 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 are all Chinese nationals, the country’s transport ministry said.