In a medium saucepan, combine the whole milk and heavy cream. Split the vanilla bean pod lengthwise, scrape out the seeds with the back of a knife, and add both the seeds and the pod (if using) to the milk mixture. Alternatively, add the vanilla extract if you're not using a vanilla bean.
Place the saucepan over medium heat and heat the mixture until it's just about to boil. Stir occasionally to prevent scorching. Once heated, remove the saucepan from the heat and let it cool slightly. Remove the vanilla bean pod if used.
In a separate bowl, whisk together the egg yolks, granulated sugar, and a pinch of salt until the mixture becomes pale and slightly thick.
Slowly pour a small amount of the warm milk mixture into the egg yolk mixture, whisking constantly. This step, called tempering, prevents the eggs from curdling. Gradually add more of the warm milk mixture while whisking.
Pour the tempered egg mixture back into the saucepan with the remaining warm milk mixture.
Return the saucepan to the stove over low heat and cook, stirring constantly, until the mixture thickens and can coat the back of a spoon. This should take about 5-7 minutes. Do not let it boil.
Strain the gelato base through a fine-mesh sieve into a clean bowl to remove any cooked egg bits or vanilla pod remnants. Let the mixture cool to room temperature.
Once the mixture has cooled, cover it and refrigerate for at least 4 hours or preferably overnight. This allows the flavors to meld and intensify.
Pour the chilled mixture into an ice cream maker and churn according to the manufacturer's instructions until it reaches a soft-serve consistency.
Transfer the churned gelato into an airtight container and freeze for a few hours, or until it firms up to the desired consistency.
Serve your world's best gelato in bowls or cones and enjoy!