01 - In a large mixing bowl, whisk together all-purpose flour, granulated sugar, salt, and instant yeast until well combined.
02 - Pour in warm milk, add softened butter and crack in the egg. Mix with a wooden spoon or stand mixer until a soft, shaggy dough begins to form.
03 - Turn dough onto a lightly floured surface and knead for 8–10 minutes, or use a stand mixer with dough hook, until smooth, elastic, and no longer sticky.
04 - Place dough in a lightly greased bowl, turning to coat all sides. Cover with plastic wrap or a clean towel and let rise in a warm, draft-free area for 1 hour until doubled in size.
05 - Punch down risen dough to release air. Divide into 8 equal portions and roll each into a smooth, tight ball. Arrange on a parchment-lined baking sheet, leaving space between each.
06 - Cover loosely with plastic wrap and let rest for 30 minutes until puffed and slightly expanded.
07 - Pour vegetable oil into a deep heavy-bottomed pot or Dutch oven. Heat to 340°F, using a kitchen thermometer to maintain accurate temperature.
08 - Carefully lower 3–4 donuts into the hot oil. Fry for 2–3 minutes per side, turning once, until deep golden brown all over. Remove with a slotted spoon and drain on paper towels. Repeat with remaining dough.
09 - Let fried donuts cool to room temperature on a wire rack, approximately 30 minutes. Filling warm donuts will cause the cream to melt and run.
10 - Using a chilled bowl and beaters, whip cold heavy cream to soft peaks. Add sweetened condensed milk, powdered milk, and vanilla extract. Continue whipping until stiff, glossy peaks form.
11 - Scoop cream into a piping bag fitted with a round tip. Insert the tip into the side of each cooled donut and pipe generously until filled.
12 - Roll filled donuts in powdered sugar, pressing gently to adhere evenly on all sides.
13 - Serve immediately while the exterior remains crisp and the filling is fluffy. For optimal texture, enjoy within 4 hours of filling.