Railway officials said the trains collided during the morning rush hour at Halle, south-west of Brussels. One reportedly missed a stop signal.
"The devastation is enormous," said an official, as bloodied passengers were helped from the wrecked carriages.
Rail services to south-western Belgium, Paris and London were cancelled.
There were varying reports about the death toll, but eight hours after the crash the crisis centre set up to deal with the accident said 15 men and three women had been killed.
Other officials were reported as saying up to 25 people had died. There were reports of passengers still trapped in the wreckage hours after the crash.
The two trains collided in the commuter town around 0830 local time (0730 GMT).
The governor of Flemish Brabant province, Lodewijk De Witte, said one of the trains seemed to have missed a stop signal.
Belgium's track operator Infrabel said an investigation into the accident was under way, and it was difficult to speculate on the cause at this stage.
Television pictures showed carriages pushed up at an angle or leaning to the side from the force of the crash.
Witnesses said people were thrown around violently inside the trains with one passenger describing the "carriages compacted together" by the collision.