One of those killed was an engineer of the train, which ploughed into the truck near the town of Caluso at 11.20pm local time, the Italian news agency ANSA reported.
The train had been travelling from Turin to the town of Ivrea.
One of two critically injured people later died in hospital after being taken away from the crash site by helicopter.
According to ambulance officials, a total of 18 people were injured following the impact, most of them not critically.
The rig truck driver escaped without injury, according to ANSA, which said the vehicle carried Lithuanian licence plates and was on its way to a nearby warehouse.
The railway barrier had been lowered properly before the train approached, according to the railway operator RFI. It said for unknown reasons the truck had smashed through the barrier and ended up on the tracks.
Three carriages were derailed as a result of the impact.
ANSA spoke to a young woman who broke her leg in the crash and quoted her as saying she felt as if she was being pushed from behind before falling.
She said she thought she was going to die and described the scene as “terrible”.
Rescue workers are continuing to look through the wreckage for any trapped passengers.