Preheat oven to 350˚F (180˚C). Arrange the hazelnuts in a single layer on a rimmed baking sheet.
Bake in the preheated oven until golden brown and fragrant, 10-15 minutes.
Once cooled slightly, place the hazelnuts in a clean cloth and rub to remove the skins.
Place the hazelnuts in a food processor. Pulse briefly until finely chopped.
In a medium saucepan, place the milk and heavy cream over medium heat.
Once heated through and steaming, but not yet boiling, add the chopped hazelnuts and remove from heat.
Cover and let rest at room temperature to steep for 1 hour.
Strain the hazelnut milk through a fine mesh sieve into a medium bowl, pressing the hazelnuts to release as much liquid as possible.
Discard the solids. Clean the saucepan and place the strained milk and cream back over medium low heat.
In a medium bowl, whisk together the egg yolks, sugar, and salt.
While continuing to beat the sugar and eggs, slowly pour in a tablespoon of the heated milk and cream. Once incorporated, slowly stream in and whisk another 1/2 cup (120 milliliters).
Slowly pour the mixture back into the saucepan over medium-low heat while whisking.
Cook while continuing to stir until just thickened enough to coat the back of a spoon, 170-180˚F (77-82˚C).
Remove from heat and add the chocolate. Allow to rest for 30 seconds to 1 minute, then whisk to melt the chocolate into the cream until smooth.
Whisk in the vanilla extract.
Transfer the mixture to a bowl, cover, and refrigerate until chilled.
Pour chilled mixture into ice cream maker and follow manufacturer's directions to create the gelato.
Serve immediately or transfer to freezer safe container and freeze until desired consistency.