In a large pan, melt butter. Add shallot and a pinch of salt and sauté for 4-5 minutes, or until tender and translucent.
Remove from heat and stir in asparagus spears and bread pieces; stir until well combined.
Transfer bread mixture into a 9x9 baking dish and set aside.
In a separate bowl, whisk together eggs, milk, and seasonings. Sprinkle in cheese, bits at a time, so as not to clump.
Pour egg mixture evenly over bread and garnish with tomatoes. Cover with foil and chill overnight or for at least 8 hours.
The following day, remove from fridge and let rest at room temperature for 45 minutes.
Bake covered at 350 degrees for 30 minutes. Remove foil and bake for another 10-15 minutes, or until top is golden and eggs are set.