The accident happened in chilly temperatures when passengers stood up in a rush to get off the boat as it approached a pier on the river, Cao Thi Huong, identified as a survivor of the accident, was quoted as saying on the VnExpress website.
There had been 80 people on the boat, despite it only having a licence to carry 40, website reported.
The website said that police had detained Nguyen Xuan Quy, the captain and owner of the boat, while investigating the accident.
Hundreds of bereaved relatives crowded the river banks after the accident, crying as volunteers carried off bodies using hammocks and nets suspended from shoulder poles, news images showed.
The tragedy happened around 8 am (01:00 GMT) on the eve of the Tet lunar New Year, Vietnam's biggest annual festival, when extended families reunite for traditional feasts and to pray for good luck in the year ahead.