Concluding my countdown of last year’s best films…
Best Films of 2025
#1. One Battle After Another
Paul Thomas Anderson is one of my guys — one of a handful of filmmakers I consider among my very favorites. I consider him a modern American master, somebody whose name should and will be listed alongside Scorsese, Hitchcock, Welles, Spielberg, Coppola, and Kubrick.
That said, it had been four years since his last release, and 2021’s Licorice Pizza (despite its many charms) is probably my least favorite of his films. Before that, it’s all the way back to 2017 and the brilliant Phantom Thread. So when One Battle After Another was announced, I’d been waiting nearly a decade for a new PTA masterpiece with no guarantee I’d get one.
Well, I got one.
This is Anderson’s first film set in the present day since 2002’s Punch-Drunk Love, and that film didn’t exactly tackle current events. Over the last 20 years, he explored meaty themes by mining America’s thorny past in There Will Be Blood, The Master, and Inherent Vice, but he never overtly addressed our current century.
One Battle After Another opens with a scene of revolutionary Perfidia Beverly Hills (Teyana Taylor) walking past an immigrant detention center. In the midst of Trump’s monstrous ICE operation, the image feels like a shot across the bow.
Granted, the timeline is a bit fuzzy. That scene takes place 15 years in the past but feels like present day by way of the 1960s. The whole movie exists in a sort of temporal limbo, in part because it is based the Thomas Pynchon’s Vineland, set in the 1980s. But the lack of specificity, and the recognizable villains, make it feel like one long stretch of last week.
After an epic prologue, the film’s main action follows Bob Ferguson (Leonardo DiCaprio) and his daughter Willa (Chase Infiniti), living for years on the down low after Bob escaped prosecution for his criminal revolutionary past. He’s a paranoid dopehead, she’s a resourceful high school student. Then the shit hits the fan when former adversary Col. Steven J. Lockjaw (Sean Penn) hunts them down for very personal reasons.
This is a chase movie and a stoner comedy, a wicked satire and a call to arms. It’s the fastest two hours and 45 minutes I’ve ever spent in a theater. It has entire sequences I want to dissolve into liquid and inject into my veins.
One of those is the movie’s centerpiece, an extended stretch where Bob seeks to get out of town with the help of Benicio Del Toro’s Sergio St. Carlos, a karate sensei who conducts an Underground Railroad for the city’s undocumented population. This passage is filled with so much excitement, humor, and genuine emotion that it could work as a standalone short film.
Even more impressive is that much of the sequence was worked out after production began, when Del Toro suggested adding layers of social and political intrigue to his character. It’s a testament to the power of collaboration, and it’s a miracle that something so fluid feels so carefully crafted.
Another jaw-dropping sequence is a climactic car chase through the desert roads of Borrego Springs, a scene that turns the streets’ rolling hills into a rollercoaster ride of escalating tension. I didn’t expect Paul Thomas Anderson to reinvent the car chase in 2026, but here we are.
One Battle After Another is my favorite film of last year thanks to all that incredible filmmaking but also because of its huge heart. At its core, this is a movie about a father raising his daughter to continue the fight he couldn’t win. It’s about trusting the next generation despite giving them little reason to trust ours. The film ends on a note of exhilarating hope, which might be its most daring move of all.
In a year of great movies about the modern apocalypse of the 2020s, this is the greatest.
Ready, get ready, yeah
[Chorus]
Ready or not, here I come, you can’t hide
Gonna find you and keep you happy
Ready or not, here I come, you can’t hide
Gonna love you and make you love me
[Verse 1]
You can’t run away (You can’t run away)
From this love I got, oh baby (You can’t run away)
Hey baby, ’cause I got a lot, yeah
Anywhere you go (Anywhere you go)
My poor heart got to know, oh baby
Hey baby, you can’t hide from my love, oh no
[Chorus]
Ready or not, here I come, you can’t hide
Gonna find you and keep you happy
Ready or not, here I come, you can’t hide
Gonna love you and make you love me
[Verse 2]
Anywhere you go (Anywhere you go)
My poor heart got to know, oh baby, hey baby
You can’t hide from my love, oh no, yeah yeah, mhm
[Pre-Chorus]
Ready, get ready
Ready, get ready
[Chorus]
Ready or not, here I come, you can’t hide
Gonna find you and keep you happy
Ready or not, here I come, you can’t hide
You better come on, baby, oh yeah, oh yeah
Gonna find you and I’ll make you happy
Ready or not, here I come, you can’t hide
I’m gonna find you now, yeah
Gonna find you and I’ll make you happy
Anywhere you hide now, oh yeah, yeah