Reel Reviews | Good Fortune (TIFF ’25)

by Tim Gordon

Stories about angels intervening in human lives have long captured our imaginations, from Heaven Can Wait to City of Angels to Wim Wenders’ transcendent Wings of Desire. Aziz Ansari’s Good Fortune takes up that mantle but gives it a distinctly modern spin, blending broad comedy with a surprisingly tender exploration of class, wealth, and purpose.

The film follows Arj (Ansari), a struggling worker drowning in meaningless jobs and personal disappointments, who crosses paths with Jeff (Seth Rogen), a wealthy but shallow venture capitalist. Watching from above is Gabriel (Keanu Reeves), a well-meaning but inept angel tasked with protecting humans from everyday dangers. When Gabriel decides to meddle in Arj’s life by swapping his body with Jeff’s to “teach him a lesson,” things spiral quickly out of control. Gabriel loses his wings, Arj finds himself unwilling to give up his newfound wealth, and Jeff is forced to confront the shallowness of his own existence.

At its core, Good Fortune is a morality play dressed up as a body-swap comedy. Ansari’s script leans into both the absurdity of the setup and the poignancy of its message: money won’t solve all your problems, but purpose and connection just might. It’s an earnest, occasionally uneven film, but one with real heart.

One of the film’s biggest surprises is Keanu Reeves as Gabriel. Reeves is very good here, almost satirizing his own image as the stoic, messianic figure. His performance walks a playful tightrope, part earnest angel, part deadpan comic foil. When Gabriel is temporarily stripped of his powers and forced to live among mortals, Reeves infuses those sequences with sly humor, poking fun at his larger-than-life persona while still grounding Gabriel in genuine warmth. It’s a clever casting choice that adds a distinct comedic energy to the film and keeps the angel’s arc from tipping into sentimentality.

Rogen does what he does best, playing Jeff with both bombast and insecurity, while Keke Palmer steals scenes as a sharp, no-nonsense figure caught in the chaos. Sandra Oh adds another layer as a grounded foil to the film’s more outlandish characters, anchoring some of the emotional beats. Ansari himself is charming enough as Arj, though occasionally his comedic instincts undercut the film’s more dramatic turns.

Visually, cinematographer Adam Newport-Berra gives Good Fortune a glossy but approachable sheen, balancing heavenly whimsy with earthly grit. Carter Burwell’s score helps stitch together the tonal shifts, from wry comedy to heartfelt drama.

For all its charms, the film isn’t without flaws. The pacing can feel uneven, with some gags overstaying their welcome, and the thematic beats about empathy, greed, and second chances are hardly new. But Ansari’s directorial debut shows a genuine desire to engage with those themes rather than just play them for laughs.

In the end, Good Fortune isn’t perfect, but it’s disarmingly sincere. It channels the spirit of its cinematic predecessors while carving out its own quirky lane, buoyed by Reeves’ unexpected comic turn and Ansari’s heartfelt vision. The film reminds us that even flawed angels and flawed humans can sometimes deliver grace.

Grade: B