The film opens in Edinburgh with a narration by Angus the Hangman (Bill Bailey), telling of how the corpses of those hanged by himself are transported to Dr Robert Knox (Tom Wilkinson) to dissect, while his rival Dr Alexander Monro (Tim Curry), who wants Knox's job, is left to amputate body parts of living people. Just then, Monro's assistant Charles Darwin (Christian Brassington) with a forged letter stating the allowance of the dead bodies to be transported to Monro's castle to be dissected by himself instead. Angus is then left to tell Knox's assistant, Patterson (Michael Smiley), that the bodies are now being given to Monro. Patterson delivers to message to Knox.
The film then switches to William Burke (Simon Pegg) and William Hare (Andy Serkis) attempting to sell cheese mould which they state is growing moss. When they are found out, they flee back to an Inn owned by Hare's wife Lucky (Jessica Hynes), who states that one of their lodgers has died. Burke and Hare decide to transport the corpse to Knox. They are forced to break the corpse's spine in order to fit inside the barrel. While on the way to Knox's castle, they stop at a bar, and while there, a young woman, Helen McDougal (Isla Fisher) - under the name Ginny Hawkins - a former prostitute, attempts to attract the attention of everyone in the bar by doing an extract from the William Shakespeare play Macbeth. While everyone else in the bar take no notice Burke begins talking to Ginny and asks her why she did so. Ginny explains that it was her ambition to become an actress. While Burke and Ginny have a drink together, Hare tells Burke that they had better set of to Knox's castle.
Burke and Hare arrive at Knox's castle and present the now mangled corpse to Knox. Knox then agrees that if the pair bring him two bodies a week for dissection, he will pay them a large amount of money. While Burke sees this as his chance to help Ginny's ambition of becoming an actress, Hare is content on using the money to open a funeral parlour. When Burke and Hare return to the Inn, they find Lucky drunk and nearly unconscious. Lucky explains why she is in that state as it is Joseph (Christopher Lee), another lodger at the Inn, is near death. Burke and Hare see this as their chance to make a start, before Joseph can die himself they suffocate him and take his body to Knox, who gives them both a large amount of money.
Burke and Hare share out the money, and Burke goes to find Ginny. Burke tells Ginny the good news, and she hugs him and allows him to take her home, while Hare goes to the bar where he meets Fergus (David Schofield), the suffering henchman of villain Danny McTavish (), who visits Lord Harrington (Hugh Bonneville) and William Wordsworth (Simon Farnaby) and informs them. Harrington and Wordsworth give McLintock permission to hunt down the criminals and have them hanged.
Following this, Hare is once again kidnapped by McTavish, who orders both he and Fergus to hand over their money for protection. While Hare and Fergus look at each other, the scene snaps to the dissecting theatre, where McTavish's corpse turns up for Knox to dissect. This causes outrage, and as Burke and Ginny's auditions begin, Burke and Ginny are capture by McLintock while about to make love while Hare and Lucky are captured while having sex.
All of them are locked in different cells, and are informed that if one of them admits to the murders, the others will go free. Burke agrees to do so on one condition, that he is put in the same cell as Ginny so they can finally make love. This happens.
The following day, Burke awaits his hanging at the gallows. When Angus announces that if Burke has any last words he should say them now. Burke then states "Only this", before turning to look at Ginny in the crowd, and states "I did it for love", before he is hanged.
Angus then tells of how each character goes their separate ways, before the camera zooms up on the skeleton of Burke in a present day museum.