Fossilised bones bear tooth-marks that could only have come from another member of the same species.
The ferocious offender is a giant meat-eater the length of a double-decker bus that lived 65 to 70 million years ago.
Scientists believe the two-legged creature, named Majungatholus atopus, may have dined on its own kind to survive.
There were dramatic food and water shortages at the time, and many animals became extinct.
"It appears as though Majungatholus atopus exploited all available resources during stressful episodes, even if it meant dining on members of its own species," says Raymond Rogers of Macalester College in St Paul, Minnesota, US, who led the research team.
'Reasonably convincing'
The discovery is no great surprise as many large predators, such as lions, have been known to use cannibalism as a feeding strategy.
The skull of the cannibal (Image: Greg Helgeson, Macalester College)
There has been speculation that some dinosaurs might also have been cannibals but proof has been hard to find.
The best example until now has been in a small Triassic meat-eater called Coelophysis bauri.
The remains of juvenile individuals appear to have been found in its stomach but some scientists are not so sure.
They think the skeleton could be a freak of geology - a result of the way layers of fossils have been laid down over time.
Paul Barrett, a dinosaur expert at London's Natural History museum, thinks the latest evidence of cannibalism, reported in Nature, is "reasonably convincing".
"It gives you a snapshot of the ecology of these animals at the time in Madagascar", he says, "how they interacted with each other".
Easy prey
Majungatholus would have been the top predator at the time, living among herds of huge plant-eating dinosaurs.
It may have hunted smaller and weaker members of the pack of vegetarians as well as tearing the flesh off carcasses.
What is interesting, says Dr Barrett, is that a predator such as this showed both types of feeding behaviour.
There has been much debate over whether the mighty Tyrannosaurus Rex was a hunter or a scavenger.
The serrated tooth-marks on fossilised bones of two Majungatholus dinosaurs suggests a middle way - that even the biggest meat-eaters fed on carrion as well as live prey.