Warm the milk and prep the yeast: Heat milk to just warm (not hot). If using active dry yeast, stir it into the milk with a pinch of sugar and let it foam for 5–10 minutes. Instant yeast can go straight into the flour.
Mix the base dough: In the bowl of a stand mixer, combine bread flour, sugar, salt, and instant yeast (if using).
Add warm milk and eggs. Mix on low until a shaggy dough forms, 2 minutes.
Knead to develop gluten: Increase to medium speed and knead for 5–7 minutes until smooth and elastic. The dough should pull from the sides but still be a bit sticky.
Add butter gradually: With the mixer on low, add the soft butter 1 tablespoon at a time, letting each piece fully incorporate before adding the next.
This takes 5–7 minutes. Scrape the bowl as needed.
Knead to windowpane: Once all butter is in, knead another 5–8 minutes on medium. The dough should be glossy, stretchy, and pass a windowpane test (you can stretch a bit thin enough to see light without tearing).
If very sticky, add 1–2 tablespoons flour—but keep it soft.
First rise: Shape into a ball, place in a lightly greased bowl, cover, and let rise at warm room temp until doubled, about 1 1/2–2 hours.
Optional chill: For easier shaping and better flavor, you can refrigerate the dough after it has risen, covered, for 2–12 hours. Bring back to room temp for 20–30 minutes before shaping.
Shape the loaf: Lightly flour your surface. Gently press the dough into a rectangle roughly 8x12 inches.
Roll it up snugly from the short side, pinch the seam, and tuck the ends. For a more even crumb, divide into 3 equal pieces, roll each into a tight log, and place side-by-side in the pan.
Second rise: Place the shaped dough into a greased 9x5-inch loaf pan. Cover and let rise until the dough crowns about 1 inch over the rim, 45–75 minutes depending on room temp.
Preheat and prep: Heat oven to 350°F (175°C).
Brush the top lightly with milk for a tender sheen. For extra softness, place a small oven-safe dish with hot water on the lower rack to create gentle steam.
Bake: Bake 30–35 minutes until deep golden brown and the internal temp reaches about 190–195°F (88–90°C). Tent with foil at 20–25 minutes if browning too fast.
Cool properly: Let the loaf rest in the pan for 10 minutes, then turn out onto a rack.
Cool at least 1 hour before slicing to set the crumb.