Mrs. Montague and Mr. Capulet (Julie Walters and Richard Wilson) are two elderly neighbours who despise each other. When they leave their respective gardens, their garden gnomes come alive. The Montague garden is filled with blue-hat gnomes, and the Capulet garden has red-hat gnomes. Like their human gardeners, the gnomes also despise each other.
The gnomes hold a back alley lawnmower race, with Gnomeo (James McAvoy) driving for the blues and Tybalt (Jason Statham) for the reds. Tybalt cheats to win the race, destroying Gnomeo’s lawnmower. Gnomeo and his best friend, Benny (Matt Lucas), are disappointed to see Mrs. Montague ordering a new “kitty” lawnmower.
That night, Gnomeo and Benny infiltrate the red garden in black disguise. Benny sprays Tybalt’s well and accidentally triggers a security light. During the escape Gnomeo ends up in a nearby garden where he bumps into a disguised Juliet (Emily Blunt), the daughter of the red gnomes leader Lord Redbrick (Michael Caine). Juliet is attempting to retrieve a unique orchid, and the two romantically fight over it. They each discover the other’s color before fleeing the garden. When they both go back to their own gardens, Juliet tells her frog-sprinkler friend Nanette (Ashley Jensen) about her newfound love. Nanette states that the relationship is romantically tragic.
Gnomeo and Juliet have secret meetings in the nearby garden, where they meet a pink plastic flamingo named Featherstone (Jim Cummings) who encourages their love. Lord Redbrick pairs Juliet with a Red Gnome named Paris (Stephen Merchant), but Juliet isn’t interested in him and distracts him with Nanette who has feelings for him.
Gnomeo’s mother and the blue gnomes leader Lady Bluebury (Maggie Smith), is distraught after the reds infiltrate the garden and destroy the plant nurtured by Gnomeo’s deceased father. The blues want Gnomeo to take revenge on the reds, and he realizes that he cannot refuse unless he tells his secret. Just as he is about to spray the prized tulips of the reds, Juliet sees him and he backs out of the attack.