Donald Peterson is an anxious teacher who has just moved to a new house with his pregnant wife Sarah. He accepts a teaching job at St. Bernadette's primary school, taking over the class formerly taught by Paul Maddens (Played by Martin Freeman in the first film), who by this point has left for the United States; in the interim, the enthusiastic and childlike teaching assistant Mr. Desmond Poppy has been letting the kids mess around with him and his childish tactics which causes every supply teacher the school's headmistress Mrs Bevan has found leave.
The class wants to enter in a competition called "A Song for Christmas", in which each school produces their own Christmas song, with the winning song earning its school £10,000 and the chance at being a Christmas number 1. However, headteacher Mrs. Bevan refuses the class permission to enter without a qualified teacher, and worries that her nephew, Mr. Poppy's, behaviour is so inappropriate that no teacher will ever stay in the job.
Donald lives in the shadow of his domineering father, and his estranged, 'golden boy' identical twin brother Roderick, who is a world-famous composer and conductor. When Mr. Poppy decides St Bernadette's should enter the National 'Song for Christmas' competition, he persuades Donald to sign the entry forms, later kidnapping him for an impromptu road trip to Castell Llawen ("Merry Castle", not a real place) in Wales, where the competition is being held.
However, Roderick is also competing in the competition, mentoring the choir of posh St Cuthbert's College. Mr. Shakespeare (Jason Watkins) from Oakmoor School, rivals of St Bernadette's, has also entered his class. Donald and Mr. Poppy take their class through the wilds of Wales where they get past obstacles, such as exhaustion, rivers and baby nappies for a baby that one of the children smuggled into the group, to a mountain, which they have to climb over to reach Christmas Castle in time for the show.
As soon as they arrive Donald is reunited with Sarah and Mr. Poppy with Mrs. Bevan. However, Roderick is determined to win so he steals the baby and a part of Mr. Shakespeare's song, locks his brother, Mr. Poppy and the class in a giant snow globe and disqualifies them. But the vengeful Mr. Shakespeare and his class help them out, Mrs. Bevan retrieves the baby and St. Bernadette's sing two successful songs while pretending to be Oakmoor. When Donald's father and brother come to find him backstage and end up belittling him once again, Donald brings up the courage to tell Roderick and his father to shut up after Donald slams Roderick about winning the prize, Him, Mr Poppy and the children having fun on the stage and that it might not be important to Roderick and his awards and reviews, followed by him shouting at Roderick and his father for their less-than-loving treatment of him, and stating that he is happy now that he has a family of his own, which leaves them both gobsmacked. Angel Matthews hears the commotion backstage and threatens to call security and have them ejected from the building, but Donald leaves the building of his own accord, his new family in tow, loudly declaring, "Good night; good luck; merry Christmas; thank you very much!", Mr Poppy then goes back to ask Angel for an autograph until Donald calls him back and he kisses Roderick, saying "Cheer up, it's Christmas!" and Roderick, feeling severely disgusted, mutters "I'm gonna need a jab!".
As they leave, Sarah suddenly falls into labour and they place her on a donkey they found on the way to the castle and take shelter in a barn (which homages the actual birth of Jesus Christ) where Donald helps her give birth to twin boys. Mrs. Bevan and the rest of St. Bernadette's join them, along with Donald and Rodrick's father who finally admits he is proud of Donald. Back at the castle Oakmoor wins the 'Song for Christmas' though it should have been St. Bernadette's.
In the barn Mr. Shakespeare and Roderick show up. As Mr. Poppy and the class sing another Christmas song for Donald, Sarah and their new babies, the two brothers finally reconcile and decide to get the family together more often, followed by Roderick placing his half of the locket given to him and Donald by their mother which makes Donald emotionally happy, Roderick then wishes him a Merry Christmas as the song finishes and Mr Poppy puts on a deep voice, making it sound like the donkey is saying "Merry Christmas", which gets everyone laughing.
David Tennant as Donald Peterson / Roderick Peterson, estranged twin brothers, Donald is a Primary School Teacher and Roderick is a World-Famous Composer, Chorister and Choir Master
Marc Wootton as Desmond Poppy, the primary school assistant and Mrs. Bevan's nephew
Jason Watkins as Mr Shakespeare, the head of rival school Oakmoor
Joanna Page as Sarah Peterson, Donald's wife
Ian McNeice as Mr. Peterson Snr., Donald and Roderick's father
Jessica Hynes as Angel Matthews, an opera singer and presenter of 'A Song For Christmas'
Pam Ferris as Mrs. Bevan, the school headteacher and Desmond's aunt
Ben Wilby as Bob
Brandon McDonald as Olly
Caitlin Cronin as Lucy
Dominic McKernan as Dan
Ellie Coldicutt at Beth
Faye Dolan as Jade
Joe Lane as Edward
Joshan Patel as Bill
Maeve Dolan as Sam
Michael McAuley as William
Milly Webb as Neve
Morgan Brennan as Charlotte
Reece Stowe as Fraser
Sydney Isitt-Ager as Sadie
Jesse Donohoe as Jesse
Pixie Davies as Pixie
Joseph West as Joseph
Kyle Johnson as Tommy
Louise Blunt as Little Lucy
Mason Daw as Mason
Mason Simpkins as Mason
Adrianna Bertola as Adrianna
Eleanor Grant as Eleanor
Ethan Smith as Ethan
Freddie Watkins as Sebastian
Grace Hollis as Grace
Jessica Horton as Jessica
Jessica Mogridge as Jessica
Olivia Chu as Gracie
Cerys Glover as Megan
Samuel Waters as Sam
Samuel Young as Samuel
Scott Folan as Scott
Shannon Maguire as Shannon