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'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.
When he and Juliet meet up again, they argue until Featherstone stops them, telling them he lost his wife when the two people living in the house, where the garden is, broke up and never saw each other again. Benny sees them and runs into the alleyway, where Tybalt is waiting with his lawnmower, attempting to run Benny down and chops off his hat. Gnomeo intervenes, and he and Tybalt fight on the red lawnmower until the lawnmower runs into the wall. Gnomeo jumps off last minute, but Tybalt crashes into the wall, destroying himself. The reds attempt to attack Gnomeo, thinking that Tybalt died because of him, but Juliet, to the surprise of her clan, defends Gnomeo, saying that she loves him. Gnomeo ends up on a road, and everyone believes he was run over by a truck. Lord Redbrick glues the heartbroken Juliet to her fountain because he does not want to lose her as he lost her mother.
Gnomeo is still alive, eventually reaching a park where he climbs onto a statue of William Shakespeare (Patrick Stewart) and tells him his story. Shakespeare tells Gnomeo that his story is very similar to Romeo and Juliet and that it is likely Gnomeo's will have a sad ending as well.
Benny gets onto Mrs. Montague's computer and changes her lawnmower order to a powerful Terrafirminator unit, intending to get revenge on the reds. However, the Terrafirminator goes out of control and destroys most of the two gardens while the gnomes wage a full scale war. Gnomeo makes it back to Juliet with the help of Featherstone. However, when he arrives, the Terrafirminator then frees itself, sending it flying. He tries to try to un-glue Juliet, but he is unable to. She tells him to go, but he refuses. The two share a passionate kiss just as the lawnmower crashes into the fountain, self-destructing in the process. When everyone believes that both are dead, Lord Redbrick and Lady Bluebury decide to end the feud. Miraculously, Gnomeo and Juliet emerge from the ruins and the two clans celebrate.
The film ends happily with the red and blue gnomes finally coming together to celebrate their newfound peace. Tybalt is revealed to still be alive having been glued back together, Featherstone is reunited with his wife after Benny finds and orders her online, Gnomeo and Juliet are married on a purple lawnmower, which symbolizes the new union of both gnome clans.