An unnamed passenger described the collision as "brutal", saying one of the trains did not brake.
"Wagons have been turned over, lots of people are in shock," the passenger told the RTL TV news website.
'People were screaming'
Hambaoui Mounir, a 37-year-old passenger, told the Reuters news agency that the "first two carriages were completely squashed".
"I was in the carriage right behind. The train fell to one side, people fell over each other, there was no air and women and children were screaming."
"Clearly something went very very wrong here. The heads of the trains are crushed into each other like tinfoil"
Dirk Pieters, mayor of Halle, told Flemish public television VRT that there were "at least 20 dead".
"All the emergency services are there. The most seriously injured are being treated at the scene before being taken to hospital," the mayor added.
Pieters said the seriously hurt were taken to hospitals and the lightly injured were moved to a sports complex.
There was no immediate word on the cause of the crash.
But Lodewijk De Witte, the governor of the province where the crash occured, said one train "apparently did not heed a stop light".
Terri Schultz, a local journalist, told Al Jazeera that locals were shocked by the incident.
"Clearly something went very very wrong here. The heads of the trains are crushed into each other like tinfoil."
She said Belgium's train safety record was very good.
"Things are very orderly in Belgium. I've lived here three years and I've never heard of anything like this.
"I think everyone is shocked. And this wasn't just rush hour it was the busiest commuter line going into Brussels."
Railway authorities said the accident also caused great damage to overhead power lines in the station.
Train services, including the high-speed line between Brussels and Paris, have been suspended for the day. Eurostar said its services to Britain were also not running.
Monday's crash is the most serious Belgian train accident since March 2001, when
eight people died when a crowded train ploughing into an empty train driving on the wrong tracks.