The night before, mix the flour, lukewarm milk, and yeast for the poolish until smooth. Cover with plastic wrap and let rest 8-12 hours at room temperature.
Add the poolish, bread flour, milk, yeast, salt, and sugar to a stand mixer bowl.
Mix with the dough hook on low until shaggy, then add the egg and softened butter one tablespoon at a time.
Knead on medium-low for 10-15 minutes until smooth and elastic. Add remaining flour if needed.
Form into a ball and place in an oiled bowl. Cover and let rise 1-1.5 hours until doubled.
Deflate the dough and roll into a tight log. Place seam-side down in a greased 9x5 loaf pan.
Cover and let rise 1-1.5 hours until crowned 1 inch above the pan rim.
Place a metal pan on the bottom rack and preheat the oven to 375F.
Brush the loaf with egg wash if desired. Add the loaf to the oven and pour 1 cup hot water in the bottom pan.
Bake 35-45 minutes until deep golden and internal temperature reaches 190F.
Cool in the pan for 10 minutes, then remove to a wire rack to cool completely.