Most of the passengers on board could not swim, the head of Mosul's civil defence agency said. Reports suggest nearly 200 people were on board.
The ferry was said to be heading towards a tourist island as part of new year celebrations.
Prime Minister Adel Abdul Mahdi has ordered an investigation "to determine responsibilities".
In a statement Mr Mahdi said he was following the story "with pain and sadness", and had ordered "all state efforts" to find survivors and treat victims.
The prime minister later toured a hospital and a morgue in the city, and declared three days of national mourning.
Jeanine Hennis-Plasschaert, the special representative for Iraq of the United Nations secretary general, said it was a "terrible tragedy".
"Our hearts go out to the families and relatives of the victims," she said in a statement.
Authorities had reportedly warned people about rising water levels as the gates of the Mosul dam had been opened, and some are accusing the ship operator of ignoring the advice.
Images on social media showed the upturned vessel and people floating in the fast-flowing river.
Ambulances and helicopters arrived to help survivors and search for the bodies of those who died.
However, local information account Mosul Eye reports that security forces are trying to arrest journalists reporting on the ferry sinking.