01 - Preheat oven to 350°F. Grease a 9x13 inch baking dish with butter.
02 - In a large skillet over medium heat, cook sausage, breaking apart until browned and fully cooked, about 6–8 minutes. Remove sausage, leaving 1 tablespoon fat in pan.
03 - Add diced onion and red bell pepper to skillet; sauté 4–5 minutes until softened. Stir in baby spinach and cook until wilted, about 1–2 minutes. Remove from heat.
04 - In a large bowl, whisk together eggs, whole milk, heavy cream, salt, black pepper, garlic powder, and dried thyme until smooth.
05 - Layer half of the bread cubes evenly in the prepared dish. Top with half the sausage, half the vegetable mixture, and half the shredded cheeses. Repeat layering with remaining ingredients.
06 - Pour egg mixture evenly over the layers, pressing gently to allow bread to absorb the liquid.
07 - Cover with foil and refrigerate for a minimum of 30 minutes or up to overnight to enhance flavor and texture.
08 - Bake covered with foil for 30 minutes in the preheated oven.
09 - Remove foil and bake an additional 20 minutes until the center is set and top is golden brown.
10 - Allow casserole to rest for 10 minutes before slicing and serving.