Hollow Ammo: Our Review of ‘Ballerina’

Posted in Movies, Theatrical by - June 06, 2025
Hollow Ammo: Our Review of ‘Ballerina’

If you’re going to recreate something, you can’t leave out any of the ingredients….

While there’s no denying that Ballerina successfully manages match the levels of violent spectacle in the John Wick universe, it forgets the key element that made the original films so emotionally engaging (and no we’re not talking about the dog).

Taking place during the events of John Wick: Chapter 3 – Parabellum, the film follows Eve Macarro (Ana de Armas) who is beginning her training in the assassin traditions of the Ruska Roma.

Ultimately, Ballerina takes a little too long to genuinely find its footing because no matter how hard everyone is working and how good Ana de Armas is in the role, the story just never gives us a reason to care about anything that unfolds on the screen.

With director Len Wiseman at the helm everything feels competent and efficient but at the same time kind of lifeless without any soul or character.  While we have no actual confirmation of this the rumors of original series director and fight coordinator Chad Stahelski  supervising months of reshoots without Wiseman it would explain the films initial delay from the schedule last year and it may have actually saved the whole thing.

Despite the occasional lag in the script from a logic standpoint it all (mostly) mad sense as it al climaxes with some of the best 3rd act spectacle violence that has been seen on the big screen.  The image of a flamethrower fight might not be classic “gun-fu” in the John Wick style but it’s worth the price of admission alone.

As our heroine, Ana de Armas is actually pretty serviceable and certainly holds her own as an action star, commanding the screen with everyone opposite her, but this is ultimately where the script lets her down.

It was the simple device of Wick’s wife dying and his final gift from his wife being taken away from him that thrust him down this path and we never questioned it for a second.  Here we have the trademark “She’s avenging her parents” motif all rolled up into a fairly lame character reveal which we aren’t given a reason to care about.  Action and violence are all the more meaningful when we get truly invested in the plight of the character.  Granted there’s nothing wrong with a little spectacle, but the foundation of the Wick universe is so much more than that and de Armas never gets a chance to play with that kind of emotion.

Many key players like Angelica Huston, Ian McShane, Lance Reddick (in his last role before his untimely death) come back to give validity to the journey while Catalina Sandino Moreno, Norman Reedus and Gabriel Byrne join in the fun and we won’t spoil the very small cameo in the film from one of the first films about a female assassin as she was undoubtedly there to send de Armas on her way into this brand new world.

Ultimately, Ballerina is a solid piece of action spectacle cinema but it never adds the heart that made us get emotionally invested in all this nonsense in the first place.  Sure we’re rooting for Eve Macarro, but even when she’s standing in the same scene as John Wick, she’s not given the tools to even be able to stand in the shadow of what made the Baba Yaga (aka Wick) so damn emotionally compelling from the get go.  For that go rent or buy Wick is Pain; the behind the scenes doc on the franchise now on VOD.

This post was written by
David Voigt is a Toronto based writer with a problem and a passion for the moving image and all things cinema. Having moved from production to the critical side of the aisle for well over 10 years now at outlets like Examiner.com, Criticize This, Dork Shelf (Now That Shelf), to.Night Newspaper he’s been all across his city, the country and the continent in search of all the news and reviews that are fit to print from the world of cinema.
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-61364310-1', 'auto'); ga('send', 'pageview');