Preheat the oven to 375 degrees F. Spray a 9×13-inch baking dish with olive oil spray (or rub with oil) and set aside.
Cook the sausage in a large frying pan over medium-high heat (breaking it up with a wooden spoon) for 5-6 minutes until crumbly and beginning to brown. Add the shallots and garlic and cook for an additional 2 minutes or so, until the sausage is cooked through and the shallots are translucent. Remove from the heat and stir in 2 tablespoons of the basil. Using a slotted spoon, remove the mixture to a paper towel-lined plate or bowl to soak up the grease.
Thinly slice the tomatoes and lay on a paper-towel-lined baking sheets to soak up extra moisture. In a large mixing bowl, whisk together the eggs, milk, half-and-half, and 1 cup mozzarella. Season with salt and pepper (the amounts in the recipe are recommended – you can use less or more if you wish!).
Sprinkle the sausage mixture in the bottom of the baking dish and pour the egg mixture on top. Carefully arrange the tomatoes on top, making 3 or 4 long rows, alternating colors to create a pretty pattern. Sprinkle the remaining half cup cheese on top and 2 more tablespoons basil.
Bake for 30 minutes or until the top is golden brown. Let sit for 5-10 minutes before serving.
MAKE-AHEAD: Make the sausage mixture and the egg mixture the day before. Store separately and assemble and bake the casserole the morning of. Or just make the whole thing the night before, bake for around 20-25 minutes, let cool and then reheat the next morning. Either way saves time and still tastes great!
NOTE: Feel free to eliminate the sausage mixture to make a vegetarian version.