Lewis MacDougall poses with his new friend in "A Monster Calls"

Whenever I watch Juan Antonio Bayona’s supernatural movies, I always get this sense of a lively guy who came late to the party. The Spanish director is sometimes billed as J.A. Bayona, and if his 2007 debut film The Orphanage owed a heavy debt to The Others, his current movie A Monster Calls owes a similar debt to Pan’s Labyrinth. The comparison doesn’t flatter Bayona. You can see where the fairy-tale segments and harsher real life intersect in the same way, but Bayona doesn’t have Guillermo Del Toro’s eye for visual beauty. Still, A Monster Calls manages to be affecting despite its secondhand nature, largely because of a great cast and an honest script.

That is adapted by Patrick Ness from his own illustrated novel about Conor O’Malley (Lewis MacDougall), a 13-year-old boy in rural England who’s angry at everyone and everything. He has good reason; his mother Lizzie (Felicity Jones) is dying of cancer, and Conor is in denial about it, insisting that her latest round of treatments will finally rid her of the disease. It’s at that point that a monster (voiced by Liam Neeson) springs up from the ancient yew tree on the hill overlooking their house, appears to Conor, and promises to visit him on three more evenings at precisely 12:07 a.m. to tell him three more stories.

Bayona’s immense directorial talent remains much in evidence here, as he opens the film with a gigantic sinkhole swallowing up a country church and its cemetery. His effects team’s rendering of the monster is properly terrifying, looking like a much larger and scarier cousin of Groot from Guardians of the Galaxy, with glowing red eyes and mouth. The fables that the monster tells are animated interludes done up in the style of Jim Kay’s illustrations for the book, though Bayona adds color to Kay’s inky drawings through some watercolor-like splotches. Unfortunately, Bayona returns to that sinkhole during the one notable place where the movie does not work, which is the climactic sequence when the monster forces Conor to say his deepest feelings that he’s been hiding from the world and himself. All the special effects are meant to mirror the boy’s inner tumult, but they just come off as bombastic and literal-minded.

Amon Carter Jumbo

What redeems that moment is the performance of MacDougall, a Scottish boy who wastes no effort on being likable or cute, instead plunging himself into the rage and grief that this boy is feeling. It’s not easy to dominate scenes opposite a 30-foot-tall tree-man, but this kid’s pain is real enough that he manages it. That last truth feels like it’s ripped out of him in the climax, leaving him broken.

Good talent surrounds him, too. Jones does wrenching stuff with Lizzie’s last speech to Conor, where she tells him it’s okay to be angry at such a time. If you see this next to her performance in Rogue One, you’ll get a pretty good idea of her range. As Conor’s estranged dad who flies in from America, Toby Kebbell gets a beautiful scene where he explains why his marriage to Lizzie didn’t work. Sigourney Weaver is cast perhaps a bit on the nose as Conor’s cold grandmother, but she doesn’t let you forget that behind her character’s stony facade is a woman watching her only child waste away and die.

The book was taken from an idea by children’s author Siobhan Dowd, a breast cancer patient herself who died before she could start work on the project. That’s probably part of the reason why A Monster Calls feels like it wins its insights into loss. You can walk across the multiplex and see a much worse film on the subject in Collateral Beauty. Don’t do that, though. See this well-crafted British entry instead.

A Monster Calls
Starring Lewis MacDougall and Felicity Jones. Directed by J.A. Bayona. Written by Patrick Ness, based on his own novel. Rated PG.