01 - Preheat the oven to 350°F. Grease a 9x13-inch baking dish generously with butter or nonstick spray.
02 - In a large skillet over medium heat, cook the sausage, breaking it into crumbles as it cooks, until browned and cooked through, about 6 to 8 minutes. Transfer to a plate using a slotted spoon and set aside.
03 - In the same skillet, sauté the onion and celery over medium heat until softened and fragrant, about 5 minutes. Remove from heat.
04 - In a large mixing bowl, combine the cubed bread, cooked sausage, sautéed onion and celery, and cranberries. Add the parsley, sage, thyme, kosher salt, black pepper, and red pepper flakes if using. Toss everything together until evenly distributed.
05 - In a separate bowl, whisk together the whole milk, heavy cream, and eggs until smooth. Stir in the shredded cheddar cheese and Parmesan if using.
06 - Pour the egg custard mixture over the bread and sausage mixture. Gently toss until all the bread cubes are evenly moistened and coated.
07 - Transfer the mixture to the prepared baking dish, spreading it into an even layer. Let it rest for 10 minutes to allow the bread to fully absorb the custard.
08 - Bake uncovered for 45 to 50 minutes, or until the top is golden brown and the center is fully set. A knife inserted in the middle should come out clean.
09 - Allow the casserole to rest for a few minutes before slicing. Garnish with additional fresh parsley if desired and serve warm.