Grease a 9x13-inch baking dish with butter.
Spread cubed bread evenly in the dish.
Brown sausage in a skillet. Add onion, garlic, and spinach. Cook until softened, then remove from heat.
Spread sausage mixture over bread, then sprinkle cheese evenly on top.
Whisk eggs, milk, salt, and pepper in a large bowl until smooth.
Evenly pour egg mixture over everything, pressing bread gently so it absorbs liquid.
Cover and refrigerate for at least 1 hour or overnight for best results.
Preheat oven to 350°F. Bake uncovered for 50–55 minutes until golden and set in the center.
Let sit 10 minutes before slicing.