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 it up with a spoon, until browned and cooked through, about 6 to 8 minutes. Transfer sausage to a plate, reserving 1 tablespoon of fat in the skillet.
03 - Add diced onion and red bell pepper to skillet. Sauté until softened, approximately 4 to 5 minutes. Stir in baby spinach and cook until wilted, 1 to 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 combined.
05 - Layer half of the bread cubes evenly in the prepared baking dish. Top with half of the cooked sausage, half of the sautéed vegetables, and half of the shredded cheeses. Repeat layering with remaining bread, sausage, vegetables, and cheeses.
06 - Pour the egg mixture evenly over the layered ingredients, pressing gently to ensure the bread absorbs the liquid.
07 - Cover the dish with foil and refrigerate for at least 30 minutes, or up to overnight for enhanced flavor.
08 - Bake covered with foil for 30 minutes in the preheated oven.
09 - Remove foil and bake an additional 20 minutes or until the center is set and the top is golden brown.
10 - Allow casserole to rest for 10 minutes before slicing and serving.