Warm the dairy: In a medium saucepan, combine the milk, cream, half the sugar, and a pinch of salt. If using a vanilla bean, split it, scrape the seeds into the pot, and add the pod.
Heat over medium until the mixture is steaming and small bubbles form at the edges. Do not boil.
Whisk the yolks: In a separate bowl, whisk the egg yolks with the remaining sugar until pale and slightly thickened, about 1–2 minutes. This helps dissolve the sugar and sets you up for a smooth custard.
Temper the eggs: Slowly ladle about 1 cup of the hot milk mixture into the yolks while whisking constantly.
This gradually warms the eggs so they don’t scramble.
Cook the custard: Pour the tempered yolk mixture back into the pot. Cook over low to medium-low heat, stirring constantly with a rubber spatula, making sure to sweep the bottom and corners. Heat until the custard thickens enough to coat the back of the spatula and holds a clean line when you run your finger through it, about 170–175°F (77–80°C).
Optional stabilizer step: If using cornstarch, dissolve 1 tsp in 1 tbsp cold milk and whisk into the custard in the last minute of cooking.
If using gelatin, bloom it in 1 tbsp cold water, then whisk into the hot custard off heat until fully melted.
Strain and cool: Remove the vanilla pod. Strain the custard through a fine mesh sieve into a clean bowl to catch any bits. Stir in vanilla extract now if you didn’t use a bean.
Set the bowl over an ice bath and stir until slightly cooled.
Chill completely: Cover and refrigerate at least 4 hours, preferably overnight. Cold base = smoother gelato.
Churn slowly: Pour the cold base into your ice cream maker. Churn on the standard setting until thick and softly scoopable, usually 20–25 minutes. Gelato should be slightly softer and denser than typical ice cream.
Ripen briefly: Transfer to a shallow, freezer-safe container.
Press parchment against the surface to limit ice crystals. Freeze 2–3 hours to set. Serve slightly soft for the best texture.