WHEN SIGOURNEY WEAVER wants you to cry, goddammit, you cry. Weaver isn’t even one of the leads of A Monster Calls—those roles go to young Conor (Lewis MacDougall) and a giant CGI tree monster voiced by Liam Neeson—but whenever she shows up, she makes the movie better. Weaver plays Conor’s stiff-upper-lipped grandmother who takes him in as his mother (Felicity Jones) fights cancer. Conor would rather hang out with his tree monster BFF (which, you know, fair), but it’s his grandmother who holds his world together—she’s a subtle, hard-edged woman whose emotional displays are powerful in their scarcity.

It’s good Weaver is restrained, because everyone else in this slog throws emotions around like they’re water balloons filled with tears. A Monster Calls finds director J.A. Bayona ladling out sentiment in thick, gloopy globs, and what might have been an engaging story—a kid undergoing tremendous stress finds solace thanks to an imaginary best friend—comes off as a tacky knockoff of Pan’s Labyrinth. But where Guillermo Del Toro knows when to let his visuals impress and when to make room for his characters, Bayona just bludgeons: One minute, Conor’s getting beat up; a few minutes later, Tree-am Neeson is destroying a house; by the end, Bayona is making us stare at sickly Felicity Jones with lurid specificity. A Monster Calls is determined to make you feel, and it doesn’t care how: It tries to be heartwarming, and horrific, and sad. The only thing it makes you feel is exhausted.

Except, that is, when Weaver’s onscreen. Amid all these special effects and all this death porn, Weaver’s performance feels all the more real. She steals a movie from a giant tree monster, and if that isn’t impressive, I’m not sure what is.