Ten others survived, according to a statement from Spanish police.
“They arrived in an area where there was a lot of current and waves three metres (10 feet) high, and (the boat) capsized,” a police spokesman told AFP.
“We had to rescue some (migrants) in the water and one had already died,” he said.
Later the same day, authorities rescued another boat with 19 migrants in the same area, the Spanish Red Cross said.
Some 1,600 migrants have been rescued off the shores of Ceuta since the start of the year, according to the Red Cross.
Ceuta and Melilla, two Spanish territories on the northern Moroccan coastline, are seen by would-be migrants from north and west Africa as a potential way to reach Europe.
Fifteen African migrants died in 2014 trying to swim to Ceuta, apparently after Spanish police fired rubber bullets at them.
Rights groups said the bullets pierced the lifejackets worn by the migrants, many of whom could not swim.
A Spanish court closed an investigation into the deaths earlier this month.