Almost 30 passengers were treated at the scene.
The accident came just hours after reported lightning strikes and a signal disruption on the line.
Two cars from the passenger train derailed when it rear-ended the freight train at around 11pm on Sunday in Hermalle-Sous-Huy, a hamlet on the Meuse River.
Belgian prosecutor Brigitte Leroy said the passenger train was travelling around 96kph, and the freight 10kph-15kph at the time of the crash.
State broadcaster RTBF said the dead included two passengers and the train’s driver. RTBF TV reported many of the passengers were students in their early 20s returning to school after the weekend.
Francis Dejon, mayor of St Georges-sur-Meuse, told a news conference that the passenger train’s first car was so badly smashed in the wreck “it was curled back on itself”.
Belgian railway police and state prosecutors were investigating the cause of the accident.
Belgium’s King Philippe and prime minister Charles Michel visited the crash site.
A spokesman for Infrabel, a company that oversees Belgium’s rail infrastructure, said installations where the wreck occurred “were hit by lightning” earlier on Sunday.
“It’s an element we’re going to have to look at, but it’s premature to see this as the cause of the accident,” a spokesman said.