Proof the yeast (if using active dry): In a small bowl, combine warm milk, warm water, and sugar.
Sprinkle yeast on top and let it sit for 5–10 minutes, until foamy. If using instant yeast, you can skip proofing and add it directly to the flour, but still warm the milk and water.
Make the dough: In a large bowl, whisk flour and salt. Add the yeast mixture (or warm liquids if using instant yeast), egg, and melted butter.
Stir with a spoon until a shaggy dough forms.
Knead: Turn the dough onto a lightly floured surface. Knead for 7–9 minutes until smooth and elastic. The dough should be soft and slightly tacky but not sticky.
Add a dusting of flour only if it’s too wet.
First rise: Place the dough in a lightly greased bowl, cover with a clean towel or plastic wrap, and let rise in a warm place until doubled, about 60–90 minutes.
Prepare the pan: Grease a 9x13-inch baking dish or line with parchment. This helps the rolls brown evenly and release cleanly.
Shape the rolls: Punch down the dough to release air. Turn it out and divide into 12 equal pieces (use a scale for accuracy if you have one).
Shape each piece into a tight ball by tucking the edges underneath and rolling on the counter with a cupped hand.
Second rise: Arrange dough balls in the prepared pan, spacing evenly. Cover and let rise until puffy and nearly doubled, 30–45 minutes. They should look light and pillowy.
Preheat the oven: Heat to 375°F (190°C) while the rolls finish rising.
Make the garlic herb butter: Melt butter in a small saucepan over low heat.
Add minced garlic and cook gently for 30–60 seconds until fragrant, not browned. Stir in parsley, thyme or rosemary, and a pinch of salt. Set aside.
Bake: Brush the tops of the risen rolls lightly with some of the garlic herb butter.
Bake for 15–18 minutes, until golden on top and an instant-read thermometer reads about 195°F (90°C) in the center.
Finish: Remove from the oven and immediately brush generously with the remaining garlic herb butter. Sprinkle with flaky salt, black pepper, or Parmesan if using. Let cool for 5–10 minutes before serving.