Warm the milk to 110–115°F. Stir in the yeast and ¼ cup of the granulated sugar. Cover and let sit for 5 minutes, or until the mixture becomes foamy. If it does not foam, start over with a new packet of yeast.
In the bowl of a stand mixer fitted with the dough hook, combine the flour, remaining ¼ cup granulated sugar, and salt.
Add the yeast mixture, melted butter, eggs, and 1 teaspoon vanilla extract. Mix on medium speed for 5–7 minutes until a soft, slightly tacky dough forms.
If the dough is too sticky, add additional flour 1 tablespoon at a time until it is smooth and just tacky.
Lightly grease a large bowl with the oil. Place the dough in the bowl, turning once to coat. Cover with a clean kitchen towel and let rise in a warm place for about 2 hours, or until doubled in size.
Divide the dough into 12 equal pieces and shape each into a smooth ball. Place them on two parchment-lined baking sheets, leaving space between each roll.
To make the topping, beat together the softened butter, flour, and powdered sugar until light and fluffy.
Divide the topping evenly between two bowls. Stir 2 teaspoons vanilla extract into one bowl and the cocoa powder into the other.
Divide each topping into 6 equal portions. Flatten each portion into a disk large enough to cover the top of a dough ball.
Place a topping disk over each dough ball and gently press it into place.
Using a sharp knife, score the topping with a crisscross or clam shell pattern, being careful not to cut into the dough.
Cover the rolls with kitchen towels and let rise for 30–60 minutes, or until puffy.
Preheat the oven to 350°F.
Bake for 18–20 minutes, or until the bottoms are lightly golden brown.
Cool on the baking sheets for 10 minutes, then transfer to a wire rack to cool completely before serving.
Notes
Make sure that your yeast is not expired as expired yeast will not activate correctly. I make the topping disks by flattening them out with my hands, but you can use a rolling pin or tortilla press if you prefer. You can easily add in food coloring to the topping if you want to make different colors of this delicious Mexican sweet bread. Store any leftovers in an airtight container at room temperature for up to 5 days.