The collision occurred in Granges-pres-Marnand at around 7pm.
Heavy machinery was being used late on Monday evening to try to free a missing driver believed to be trapped in the cab of his train.
Photographs published by Swiss media underlined the force of the crash,with engines of the trains wrecked and wrapped together.
Twenty-three injured were admitted to hospitals in Lausanne and Payerne, the 20 Minutes website said. Many others were treated on the spot.
Vaud cantonal police said the accident happened as a train pulled into the station as another was leaving it.
One train was bound for Lausanne, some 38 kilometres to the south, while the other was travelling north from Lausanne.
Rail traffic has been interrupted on part of the line which links the towns of Palezieux and Payerne.
Investigators were on site to launch an investigation into the causes of the crash, officials said.