In a small saucepan over medium low heat, add milk and butter to the pan and stir until the butter melts. Make sure not to let it get too hot, once butter is melted pull off heat.
In a large mixing bowl, combine yeast, salt, and sugar. Add the eggs and whisk together. Add the warmed milk and butter mixture and then add 2 cups of the flour.
Attach a dough hook to a stand mixer and mix on medium speed until smooth, about 2 minutes. Scrape the sides with a spatula as needed.
Slowly add the remaining 2 cups of flour to the mixer on medium-low speed and scrape the sides as needed. Knead until the dough is stiff and slightly sticky, about 12 minutes.
Place the dough on a lightly floured surface and hand knead for about 3 to 4 minutes, adding a little more flour to prevent sticking if needed. Do not use more than ¼ cup of flour.
Shape dough into a ball, cover with a dish towel and allow to rest for 10 minutes.
Divide into 8 pieces. Roll each piece to form a 1-inch wide rope, about 14-inches long.
Taking 2 pieces, braid the rope, pinching the ends together and then loop into a circle. Make sure the ends are securely joined together.
Place on a parchment-lined baking sheet (2 per sheet), leaving enough room for the dough to rise.
Loosely cover the baking sheet with a dish towel and allow to rise in a warm area until it doubles in size, about 45 to 60 minutes.
Preheat the oven to 350°F. Set the rack in the middle position.
Whisk together the egg wash, large egg and 1 tablespoon water. Brush each braided bread with the egg wash.
If desired, top the bread with sprinkles.
Gently place one dyed egg in the center of each braided ring. Do not press into the dough, it will sink as it bakes.
Bake one tray at a time until golden brown, approximately 15 to 18 minutes.
Quickly transfer the baked bread to a cooling rack.