The incident occurred late Wednesday when the train hit a large truck that had stopped on a level crossing near the town of Caluso, causing three carriages to come off the rails.
"At 11:20 pm (2120 GMT) the regional train 10027 Turin-Ivrea hit a heavy goods vehicle that had stopped on a functioning level crossing after crashing through the barriers," RFI, which manages Italy's rail network, said in a statement.
Local police said there were between 40 and 50 people in the train, which was the last one running from Turin to the suburb of Ivrea.
Media reports said four of the injured were in serious condition.
"According to early information, the driver of the train was killed and many other passengers have been injured," the statement added.
The AGI news agency said the second victim was taken to a Turin hospital by helicopter with severe injuries but he did not survive.
At the time of the accident he was in a van accompanying the heavy goods vehicle, other media reported.
Italy's rail operator expressed condolences over the engineer's death and extended sympathy for the injured and their near ones.
According to La Stampa newspaper, eyewitnesses said the vehicle, which was registered in Lithuania, was a particularly large and heavy truck. Media reports said it was headed for a warehouse nearby.
The van that was in front of it passed safely through the level crossing but when the barriers started coming down, the rig failed to brake in time and came to a stop on the tracks, the newspaper said.
Many others have been hospitalised, including four who are in a serious condition, local media reported.
AGI said one passenger, a woman, was in a serious condition after sustaining a head injury but she remains conscious.
Another survivor, Paolo Malgioglio, 23, told the Corriere della Sera newspaper: "Everything happened so fast, I felt the train brake suddenly and then I found myself in hell and around me everything was black."
The tragedy follows another accident in April 2017 in the north that killed two people and resulted in the temporary closure of the main railway line between Italy and Austria.
In July 2016 a collision between two trains in the south of Italy left 23 people dead and 52 others injured.