Five other children were also injured in what officials called one of the worst rail accidents in the country's history.
It appeared that the minibus drove through the closed crossing barrier, officials said on Tuesday.
A security camera showed the bus, carrying nine people, was moving when the train hit it.
The collision happened during morning rush hour near Buggenhout town, about 30km northwest of the capital, Brussels.
The bus driver and an escort were killed along with two children aged 12 and 15, said Lisa De Wilde, spokesperson for the East Flanders public prosecutor's office.
The injured children were hospitalised in serious condition.
The cause of the crash hadn't been established.
"What we do know is that the barrier was closed and the red light was on," De Wilde said.
Federal Police spokesperson An Berger said the minibus driver appeared to have ploughed through the barrier. Infrabel said the crossing was working correctly.
The train had been travelling at an estimated 120km/h as it approached the crossing and had "no time to brake", said Frédéric Sacré, a spokesperson for Belgian rail operator Infrabel.
"The impact was extremely violent," Sacré told the RTBF public broadcaster.
In a post on social media, Belgian Prime Minister Bart De Wever said he was "deeply moved by the horrific accident in Buggenhout. My thoughts go out to the affected families".
An Associated Press journalist at the scene said the bus was toppled on its side with its front section crushed. The train was relatively unscathed.
It was believed about 100 passengers were aboard the train and that none were hurt.
Rail traffic in the area was halted. Local officials stood for a minute's silence after a news conference.