The crash occurred just after 5:30 am near the town of Lodi, around 50 kilometres south of Milan.
Video footage from the scene showed that the front engine and at least one passenger wagon had skipped the tracks, flipping onto their side.
Photographs indicated that the engine had broken away from the rest of the train and smashed into an adjacent building.
“The engine car derailed, detached completely and kept going,” Girolamo Fabiano, a railroad police official told state radio.
“Then the second car derailed.”
The second car was a business class carriage with only one passenger on board.
The rest of the cars remained upright.
Fabiano said work had been done on that stretch of line during the night.
He added that the cause of the crash was unclear and investigations were underway.
Officials said only 33 people had been aboard the early morning train, which had left Milan at 5:30 am and was heading to Salerno, a port city south of Naples.
The state-railway Freccia Rossa train derailed while travelling at nearly 300 kilometres per hour, civil protection chief Angelo Borrelli told state radio.
“We are greatly saddened by the two deaths, the two rail workers, and we express our solidarity with the families,” Italian Prime Minister Giuseppe Conte said.
Railworker unions said they would stage a strike throughout Italy on Friday from 12:00 pm to 2:00 pm in protest at the “very serious and unacceptable” accident.