The prime minister blamed “appalling human traffickers” for the drownings and said a “comprehensive” approach was needed to tackle the problem.
Up to 700 migrants are feared to have been on board the boat that capsized off Libya’s coast on Saturday night.
Labour leader Ed Miliband said it had been “wrong” to end search and rescue operations in the Mediterranean.
UKIP leader Nigel Farage said the UK’s foreign policy was partly to blame for the crisis.
Mr Cameron said: “This has been a dark day for Europe; it really is horrific the scenes that we’ve all witnessed on our television screens, the loss of life.
“We’ve got to deal with the instability in the countries concerned, we’ve got to go after the human traffickers and the criminals that are running this trade.
“We’ve got to make sure yes, there is an element of search and rescue but that can only be one part of this and we should use all the resources we have, including our aid budget which can play a role in trying to stabilise countries and trying to stop people from travelling.”
oreign Secretary Philip Hammond: “We are determined to put an end to this”
But Labour leader Ed Miliband said search and rescue operations in the Mediterranean should be restarted.
“Europe has got to learn the lessons because we can’t have people drowning in European waters in this way, the world standing back aghast and Europe standing back,” he said.
The European Union withdrew funding for the “Mare Nostrum” search and rescue operation last year, replacing it with a much smaller scheme known as Operation Triton.
Mr Farage said military action in 2011 had destabilised Libya and led to mass migration.
“The fanaticism of [former French president] Sarkozy and Cameron to bomb Libya – and what they’ve done is to completely destabilise Libya, to turn it into a country with much savagery, to turn it into a place where for Christians the situation is virtually impossible,” he told the BBC on Sunday.
“We ought to be honest and admit we have directly caused this problem.”
Liberal Democrat leader Nick Clegg rejected Mr Farage’s comments and accused him of trying to score political points.
The deputy prime minister said: “I think the humanitarian reasons why not just ourselves, but other countries, decided to intervene from the air in Libya is well-known.
“Gaddafi could not have been more explicit – he said that he was going to kill every innocent man, woman and child in Benghazi.
“To suggest that intervention is the sole reason for the very profound economic and social dislocation and poverty in the whole of North Africa is both simplistic and taking election-time political point-scoring to a new low.”
EU foreign and interior ministers are due to meet in Luxembourg to discuss the deaths of migrants trying to cross the Mediterranean from Africa.
Another vessel carrying dozens of migrants has run aground off the coast of the Greek island of Rhodes, killing at least three people, including a child, the Greek coastguard has said.
About 80 people are said to have been rescued.