A big step above most “message” movies, “Gimme Shelter” boasts strong performances and a compelling storyline. Unfortunately, it’s a secondary storyline. But in that rarest of Hollywood rare beasts — a well-made, pro-life movie with religious themes — that makes it practically a masterpiece.

Vanessa Hudgens nails the part of Agnes (she calls herself Apple, for reasons you eventually discover), an abused, pregnant teen. She’s utterly repellent, as many troubled teens are. Raised by a drug-addicted mother and bounced back and forth between foster homes, she runs away and seeks help from her father, a wealthy Wall Street tycoon with a gorgeous foreign wife, a mansion and two young children. For reasons the movie doesn’t explain, he’s never looked for her or attempted to support her, even anonymously — all she has of him is a letter he wrote to her before she was born.

The bleakness of Apple’s life is hard to watch. Unable to care for herself, her only choices are to do what she is told or run away. Unable to trust, she lashes out at everyone. Does she have a future? Can a shelter for young mothers give her one?

The movie answers that question fitfully. It’s a great illustration of the difficulties and joys of helping suffering people, of all life having value and of the difference one person can make.

But as a story, it’s not entirely successful. After nailing her performance as the despairing, savage teen, Hudgens is not really given a chance to show how Apple transforms into a young woman who may be able to build a life for herself and her baby. She just does. The same goes for the shelter — after establishing that it helps young women, the movie never shows it doing anything helpful. Brendan Fraser is likable and tentative as the father surprised by the arrival of the wounded daughter he’s never met and has no idea what to do with, but his role is only half developed. Clunky dialogue in the long speeches and in a pivotal letter stand out against the otherwise gritty script. And James Earl Jones is just a little too “James Earl Jones” to be entirely convincing as the priest who helps Apple find the Catholic shelter.

But what the film does right, it does really right. Rosario Dawson as Apple’s abusive, rage-filled mother, June, dominates every scene she’s in. Her plea for Apple to come home and live with her, alternately loving and threatening, is terrifying to watch. She was also a teenage mother, she refused to abort her child and her rage about how her life turned out is palpable. When she shows up at the shelter to take Apple, Ann Dowd as real-life shelter foundress Kathy DiFiore is spot-on in her portrayal of how professionals deal with disturbed, violent people. “Gimme Shelter” might be documentary footage at that point. The story line between the two women: will Apple’s life turn out like her mother’s? What will June do to get her back — or get revenge if she can’t — is the most difficult, but best, part of the movie.

It also ends abruptly, as do all the story lines. There’s no satisfying “end,” no family reconciliation (the final scene points to a possible one in the future), and no hint of how Apple’s life turns out. As a story, “Gimme Shelter” doesn’t entirely manage to satisfy. But it comes close.

“Gimme Shelter” is a solid film. You don’t have to judge it by morality-trumps-quality standards. Pro-life activists, ecstatic to be able to see a decent pro-life movie, are rating it higher than it deserves. Secular critics, finding it unrealistic (though it’s based on real people) and finding its low-key depiction of real-life Catholics to be overwhelmingly religious, are showing their prejudice as they pan it. It doesn’t deserve their scorn.

Far from propaganda, “Gimme Shelter” doesn’t sugar-coat anything: Apple is living proof that simply being born doesn’t mean things will turn out all right for any child. Loving her is an act of will, because she’s literally unlovable. Her family may be able to make a new life together, but can never fix what started out broken. Holding Apple’s baby, her father gives the only explanation he ever does for why he gave her up: “I didn’t know,” he says softly.

Life is hard, and often people just don’t know what they’re agreeing to or giving up. Apple doesn’t know what she’s agreeing to when she has her baby, and we don’t know what happens to her. But (in this case, literally) where there’s life, there’s hope.