Prep the Bread: Spread the bread cubes on two baking sheets and bake at 300°F for 20–25 minutes until lightly crisp and dry. Cool completely.
Cook the Vegetables: In a large skillet, melt the butter over medium heat. Add onions and celery. Cook for 8–10 minutes until soft and translucent, stirring often. Add garlic, sage, thyme, and parsley; cook another minute until fragrant.
Combine the Ingredients: In a large mixing bowl, combine toasted bread cubes and the butter-vegetable mixture. Pour in about 2 cups of broth, tossing gently until evenly moistened. The mixture should feel damp but not soggy.
Add Eggs and Seasoning: Stir in the beaten eggs, salt, and pepper. If the mixture seems dry, add a bit more broth, a few tablespoons at a time.
Bake: Transfer to a greased 9×13-inch baking dish. Cover loosely with foil and bake at 350°F for 30 minutes. Remove foil and bake another 15–20 minutes until the top is golden brown and slightly crisp.
Serve Warm: Let it rest for 5–10 minutes before serving. The flavor deepens as it sits, so don’t rush this step.