Firefighting official Farid Uddin Bhuiyan said the fire broke out on the double-deck ferry MV Obhijan-10 in the early hours of Friday.
The ferry was travelling on the Sugandha river in Jhalakathi district, nearly 150 kilometres southwest of the capital Dhaka.
The blaze is believed to have originated in the ferry's engine room and quickly engulfed the entire vessel, prompting many passengers to jump into the river, he said.
Firefighter Belal Uddin told dpa that his team found 33 bodies inside the vessel and rescued nearly 100 others from the riverside. Two others died at a hospital.
"Everything inside the ferry burnt to ash," he said.
An estimated 800 passengers were aboard the ferry, which had been en route to the southern district of Barguna from the capital Dhaka, Uddin said.
Bangladesh's riverine vessels rarely maintain a proper passengers' registrar.
Firefighters took more than three hours to extinguish the blaze after the ferry was anchored to a nearby village on the riverbank, the district's chief administrator Zohar Ali said.
He said at least 67 passengers who sustained burn injuries were taken to She-e-Bangla Medical College Hospital in the neighbouring district of Barisal.
Members of the coastguard are conducting a search of the river, he added.
TV footage showed the vessel burning on the river as passengers call for help, and hundreds of relatives of the missing passengers on the river bank.
The district administration could not ascertain how many passengers survived by jumping in the river as many of them returned to their homes on their own.
Sanjit Chandra Haldar returned to his home in Patharghata more than 60 kilometres south of the accident site on his own after he survived by jumping.
"I suddenly heard sound of an explosion, then I saw plumes of smoke quickly engulfing the vessel before I jumped into the river," he said.
Ham Jalal, the owner of the ferry, told reporters in Dhaka that he was informed at about 3am that an explosion on the first floor caused the fire, which then spread to the lower and upper floors.
He claimed that his vessel was equipped with least 21 fire extinguishers, but none of them could be used because of the quickness of the fire.
The owner demanded an impartial probe into the accident.
The Bangladesh Inland Water Transport Authority assigned a six-member panel to determine the reason behind the accident.
Deaths in ferry accidents are frequent in Bangladesh, a country of many rivers, due to lax implementation of regulation.