In the bowl of a stand mixer, combine the water, butter, salt, and sugar.
Add 3 ½ cups flour and combine. Let it rest for 15 minutes.
Add the yeast and remaining flour, if needed. Add a half cup at a time, watching to see when it starts to pull away from the sides of the bowl. Do not add anymore flour once it starts doing this.
Knead until the dough is smooth and you reach windowpane. The dough should be smooth and not stick to your fingers when you touch it.
Place in a bowl and cover to rise until doubled, about an hour.
Once risen, turn out on an oiled surface. Knead a couple times and shape into a ball. Then, divide it in half or in fourths, depending on how many you are making.
Knead each dough ball a couple of times, then form into a ball by cupping the top of it and pulling it down toward you. Rotate it and cup and pull until a smooth ball is formed.
Preheat the oven to 400 degrees F.
Cut a small “x” on each one if desired, then place on a baking sheet lined with parchment paper. Cover and place in a warm spot to rise until puffy, only about 20-25 minutes. Do not let these over proof. You just want them to get puffy.
Once risen, whisk an egg with a teaspoon of milk or water and brush over each one.
Bake for 18-22 minutes, until they are browned all over.
Once cooled, use a knife to cut the top out and scoop out the inside to create a bowl shape. Fill with your favorite soup!