Officials in Nampula province said five people had been rescued of the around 130 believed to have been on board.
They were fleeing a cholera outbreak, Nampula Secretary of State Jaime Neto said. Many children were among the dead, he added.
"Because the boat was overcrowded and unsuited to carry passengers it ended up sinking," Mr Neto.
Unverified video posted on social media purported to show dozens of bodies lying on a beach.
The boat was apparently travelling from Lunga to Mozambique Island, off the coast of Nampula, Portuguese broadcaster RTP reported.
Nampula province has been one of the worst-affected by the cholera outbreak which has spread over several countries in southern Africa since January last year.
According to Unicef, the current outbreak is the worst in 25 years. Since October 2023, Mozambique has reported 13,700 confirmed cases and 30 deaths.
An Islamist insurgency in neighbouring Cabo Delgado province has claimed the lives of at least 4,000 people and displaced nearly one million others since it began over six years ago.
For nearly 400 years, Mozambique Island was the capital of Portuguese East Africa, when the region was under colonial rule. The island is designated a Unesco world heritage site for its colonial architecture and rich history as a trading post.
By Ido Vock