In a medium saucepan set over medium-high heat, whisk milk and sugar together until dissolved, about 2 minutes. Remove from the stovetop and set aside.
In a large bowl, whisk together the egg yolks. While whisking constantly, pour the hot milk mixture into the yolks in a slow and steady stream, being careful not to add too much liquid at a time, otherwise you will cook the eggs.
Return the mixture to the pot and cook over low heat until thick enough to coat the back of a spoon, about 20-25 minutes. Stir the mixture often.
Using a fine mesh sieve, strain the milk into a bowl. Add the vanilla, bourbon (if using), spices and cream. Cover the bowl with plastic wrap and chill in the fridge before serving.