A 58-year-old man was in a "critical but stable" condition after suffering "life-threatening" abdominal injuries when the train he was travelling on hit a sewage tanker on a level crossing, doctors said.
The first of the train's two carriages was derailed and 21 people, including the train driver, were hurt in the accident at Little Cornard, Suffolk, late on Tuesday, emergency service workers said.
Police said the tanker driver - a 38-year-old man from Cambridgeshire, who was unhurt - had been arrested on suspicion of dangerous driving and will be detained overnight for further questioning.
Officers were searching the crash site and engineers preparing to move damaged carriages with a crane.
The 1731 National Express East Anglia service, which was carrying about 20 passengers and thought to have been travelling at between 50mph and 60mph, cut the tanker in two as it made its way from Sudbury, Suffolk to Marks Tey, Essex, police said.
Locals said they helped bleeding and dazed passengers off the train and told of hearing a sound "like a bomb".
They said about 10 lorries a day crossed the line on their way to and from a nearby sewage works.
A trackside sign tells drivers to phone rail officials and get permission to cross before opening a barrier gate - and warns that a £1,000 fine could be imposed if rules are not obeyed.
Police said their investigation would focus on a trackside telephone as they tried to establish whether the driver had sought permission before trying to cross.
Officers said seven people had been kept in hospital overnight with injuries that included broken ribs and heavy bruising. A police spokesman said those detained in hospital included the male train driver, who had suffered a back injury.