To begin, take a large, heavy-bottomed saucepan and pour in the whole milk. Add the sugar and vanilla bean (if using) to the pan. Stir gently to combine the ingredients. Place the saucepan over medium heat and allow the milk to warm up until the sugar dissolves completely, stirring occasionally.
Once the sugar has fully dissolved, add the baking soda to the milk mixture. This helps prevent the milk from curdling and promotes the thickening process. Stir gently as the mixture begins to foam slightly, this is a natural reaction to the baking soda.
Bring the mixture to a gentle simmer, adjusting the heat as needed. Stir constantly with a wooden spoon or spatula to prevent the milk from sticking to the bottom of the pan. As the mixture simmers, the milk will begin to reduce and darken in colour.
After about 30-40 minutes of stirring and simmering, you will notice the mixture thickening. Keep stirring and maintain a low simmer to prevent scorching. At this stage, the milk will start developing a light caramel colour.
As the liquid continues to reduce, the mixture will thicken further and take on a richer caramel colour. Stir more frequently to avoid burning the bottom. Be patient during this phase, as the transformation from milk to caramel happens gradually.
When the mixture has reached a thick, spreadable consistency, similar to caramel sauce then remove the pan from heat. If you prefer a firmer, more solid Doce de Leite, allow it to cook for an additional 5-10 minutes while stirring continuously.
Once off the heat, remove the vanilla bean (if used). Let the Doce de Leite cool slightly in the pan for about 10 minutes. The cooling process allows the mixture to thicken further, bringing it closer to its final consistency.
To serve, spoon the warm Doce de Leite into bowls or jars. You can enjoy it on its own or as a topping for bread, cakes, or cookies. For added texture, sprinkle with a touch of sea salt. This caramel treat can also be stored in an airtight container in the fridge for up to a week.