Proof the yeast: In a large bowl, combine warm milk and a pinch of sugar. Sprinkle yeast over the top.
Let it sit 5–10 minutes, until foamy. If it doesn’t foam, start over with fresh yeast.
Mix the wet ingredients: Whisk in sugar, melted butter, eggs, vanilla, salt, and nutmeg until smooth.
Add flour gradually: Stir in 3 1/2 cups of flour, one cup at a time. Switch to a wooden spoon or dough hook and add more flour, a little at a time, until the dough is soft and slightly tacky but not sticky.
Knead the dough: Knead by hand on a lightly floured surface or with a stand mixer on low for 6–8 minutes.
The dough should be smooth, elastic, and spring back when poked.
First rise: Place dough in a greased bowl, cover loosely, and let rise in a warm spot for about 1 to 1 1/2 hours, or until doubled.
Shape the donuts: Turn dough out onto a lightly floured surface. Roll to about 1/2-inch thickness. Cut out rounds with a 3-inch cutter, then cut centers with a 1-inch cutter.
Gather scraps, rest for 5 minutes, and reroll once.
Second rise: Arrange cut donuts and holes on parchment-lined sheets. Cover lightly and let rise until puffy, about 30–45 minutes. They should look lighter and feel airy.
Heat the oil: In a heavy pot or Dutch oven, heat 2–3 inches of oil to 350°F.
Keep a thermometer clipped to the side for accuracy.
Fry in batches: Fry 2–3 donuts at a time. Cook 45–60 seconds per side, until golden. Donut holes take about 30–45 seconds total.
Adjust heat to maintain 350°F.
Drain well: Transfer to a wire rack set over a sheet pan. Let excess oil drip off while you fry the rest.
Glaze while warm: Whisk powdered sugar, milk, vanilla, and a pinch of salt until smooth and pourable. Dip each warm donut, flip to coat, then set back on the rack to set.
For cinnamon sugar, toss warm donuts directly in the mixture instead of glazing.
Serve fresh: These are best enjoyed within a few hours, when the centers are still tender and the glaze has just set.