Shaun (Simon Pegg) is a 29-year-old electronics shop salesman with no direction in life. His younger colleagues don't respect him, he has an estranged relationship with his stepfather Phillip (Bill Nighy), and his housemate Pete (Peter Serafinowicz) is fed up with Ed (Nick Frost), Shaun's vulgar, unemployed best friend. Furthermore, Shaun's girlfriend Liz (Kate Ashfield) is unhappy with their social life as they spend every date at Shaun and Ed's favourite pub, the Winchester. Because Shaun always brings Ed, Liz is always forced to bring her flatmates, David (Dylan Moran) and Dianne (Lucy Davis). Shaun promises Liz that he will change.
Several hours later the zombies return; Shaun discovers the Winchester rifle above the bar is functional and the group uses it to defend themselves. Barbara reveals she was bitten along the way and dies after giving Liz her locket and implying she approves of her and Shaun, and a distraught Shaun is forced to shoot her after she reanimates. David is then pulled through a window and torn apart by the zombies, while Dianne rushes out to rescue him, disappearing into the advancing horde. Pete arrives as one of the zombies and bites Ed but Shaun shoots Pete and sets fire to the bar. The fire spreads, setting off the remaining rifle ammunition while the remaining survivors, Shaun, Liz and Ed, flee into the cellar and contemplate suicide. Discovering a barrel hatch elevator that opens to the outside, Shaun and Liz escape on the elevator as a wounded Ed volunteers to stay behind with the rifle. Back on the street, the British Army arrives and guns down the remaining zombies, rescuing the two.
Six months after the outbreak, civilization has returned to normal, with the zombies now used as cheap labour and entertainment. Liz and Shaun have reconciled and moved in together, and Shaun keeps the zombified Ed tethered in the backyard shed so they can play video games together.