Bloom the gelatin. In a small bowl, sprinkle 2 1/4 teaspoons (one packet) unflavored gelatin over 3 tablespoons cold whole milk.
Let it sit for 5–10 minutes until the surface looks wrinkled and the gelatin has absorbed the liquid.
Brew strong espresso. Pull 2–3 shots (about 1/2 cup total). If you don’t have an espresso machine, use very strong coffee made with an Aeropress, moka pot, or instant espresso powder mixed per package strength. Set aside.
Warm the dairy and sugar. In a medium saucepan, combine 1 1/2 cups heavy cream, the remaining 1/2 cup whole milk, and 1/3 cup sugar.
Add a small pinch of salt. Heat over medium, stirring, until the sugar dissolves and the mixture is steaming. Don’t let it boil.
Add the bloomed gelatin. Remove the pan from heat.
Add the gelatin-milk mixture and whisk until fully dissolved. If you see any tiny granules, keep whisking gently until the liquid is smooth.
Stir in espresso and vanilla. Whisk in the warm espresso and 1 teaspoon vanilla extract. Taste and adjust: add a little more sugar if you prefer sweeter, or a splash more espresso if you want it bolder.
Keep in mind the flavors will mellow slightly once chilled.
Strain for silkiness. For the smoothest texture, pour the mixture through a fine-mesh sieve into a large measuring cup with a spout. This catches any undissolved bits.
Pour into molds. Divide among 6 small ramekins, espresso cups, or clear glasses. Wipe any drips from the sides for a neat finish.
Chill to set. Let the panna cotta cool at room temperature for 15–20 minutes.
Cover each cup lightly with plastic wrap and refrigerate for 4–6 hours, or until set with a gentle wobble.
Add toppings and serve. Top with a dollop of lightly sweetened whipped cream, a dusting of cocoa, or shaved dark chocolate. Serve cold.
Optional unmolding. If you want to serve it free-standing, run a thin knife around the edge, dip the ramekin briefly in warm water, and invert onto a plate. Work quickly so it keeps its shape.