In a large mixing bowl, whisk together the bread flour, salt, sugar, and instant yeast. Make sure there are no lumps, as this will ensure even distribution of ingredients.
In a separate bowl, combine the whole milk, cold water, and egg. Whisk until well combined. The cold water is key as it helps to control the fermentation process, resulting in a better texture.
Pour the wet ingredients into the bowl with the dry ingredients. Using your hands or a dough scraper, mix until a shaggy dough begins to form. It should be slightly sticky but manageable.
Once the dough comes together, add the softened butter. Knead the dough in the bowl or on a lightly floured surface for about 10 minutes, until it becomes smooth and elastic. If the dough is too sticky, sprinkle a little more flour as needed.
Shape the dough into a ball and place it in a lightly greased bowl. Cover it with a kitchen towel and let it rise in a warm place for about 1-2 hours, or until it has doubled in size.
After the dough has risen, punch it down to release the air. Divide the dough into equal pieces (about 12-15, depending on your preferred size). Shape each piece into a ball and place them on a baking sheet lined with parchment paper, leaving space between them.
Cover the rolls with the kitchen towel again and let them rise for another 30-60 minutes, until they puff up.
While the rolls are rising, preheat your oven to 375°F (190°C).
Once the rolls have risen, bake them in the preheated oven for 20-25 minutes, or until they are golden brown on top. The aroma that fills your kitchen will be irresistible!
Remove the rolls from the oven and let them cool on a wire rack. They are best enjoyed warm, but you can store them for later as well.