Bloom the yeast (if using active dry): In a small bowl, combine the warm milk, warm water, and sugar. Sprinkle in the active dry yeast, stir, and let it sit for 5–10 minutes until foamy. If using instant yeast, skip this step and add it directly to the flour.
Make the dough: In a large bowl (or the bowl of a stand mixer), stir together 3 cups (360 g) of flour, salt, and instant yeast (if using). Add the milk-water mixture, eggs, and honey (if using). Mix until a shaggy dough forms. It will look messy... that’s fine.
Knead and add butter: Knead by hand on a lightly floured surface or with a dough hook on medium-low. After 2–3 minutes, start adding the soft butter, a tablespoon at a time, letting each piece disappear before adding the next. Keep kneading for 8–10 minutes more, until the dough is smooth, elastic, and slightly tacky but not sticky. If it’s soupy, sprinkle in up to 1/4 cup more flour, one tablespoon at a time. You’re aiming for a soft pillow, not a dry ball.
First rise: Shape the dough into a ball and place it in a lightly greased bowl. Cover with a clean towel or plastic wrap. Let rise in a warm spot until doubled, 1 1/2 to 2 hours. Tip: a turned-off oven with the light on is perfect. If your kitchen is cool, it may take closer to 2 1/2 hours. Be patient.
Chill briefly (optional but helpful): Pop the bowl into the fridge for 20–30 minutes. Slightly chilled dough is easier to handle and shape, especially when enriched with butter.
Divide and pre-shape: Gently deflate the dough onto a lightly floured counter. Divide into 8 equal pieces (about 90–95 g each). Tuck edges under to make rough balls. Let them rest for 10 minutes, uncovered. This short rest relaxes the gluten and makes shaping smooth.
Final shape: Working one at a time, cup your hand around a dough piece and drag it lightly on the counter in small circles to create surface tension. You’ll feel it tighten into a neat, smooth ball. Arrange on a parchment-lined baking sheet with space between each (they spread).
Second rise: Cover loosely with lightly greased plastic wrap. Let rise until puffy and about 50% larger, 60–90 minutes. They should jiggle if you nudge the pan. If you poke gently, the dent should spring back slowly, not immediately.
Preheat and glaze: Heat the oven to 375°F (190°C). Brush the buns with egg wash. Sprinkle with sesame or poppy seeds if you like.
Bake: Bake for 15–18 minutes, rotating the pan once, until deep golden all over. If you have a thermometer, the center should be around 200°F (93°C). If they’re browning too fast, tent loosely with foil for the last few minutes.
Cool: Let the buns cool on the pan for 5 minutes, then transfer to a rack. They’ll finish setting as they cool. Yes, it’s hard to wait. Give them at least 15–20 minutes before slicing so the crumb stays fluffy.