01 - Preheat oven to 350°F. Grease a 9x13-inch baking dish generously with butter or nonstick spray and set aside.
02 - In a large skillet over medium heat, cook the sausage, breaking it apart into small crumbles with a spoon, until browned and cooked through, about 6 to 8 minutes. Transfer the sausage to a plate using a slotted spoon, leaving the rendered fat in the pan.
03 - In the same skillet with the remaining drippings, sauté the chopped onion and diced celery over medium heat until softened and translucent, about 5 minutes. Remove from heat and set aside.
04 - In a large mixing bowl, combine the cubed bread, cooked sausage, sautéed onion and celery, and cranberries. Add the parsley, dried sage, dried 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 and well combined. Stir in the shredded cheddar cheese and Parmesan if using.
06 - Pour the egg custard mixture over the bread mixture and gently toss until all the bread is evenly moistened. Transfer the mixture to the prepared baking dish, spreading it into an even layer. Allow it to rest for 10 minutes so the bread absorbs the custard fully.
07 - Bake uncovered for 45 to 50 minutes, or until the top is golden brown and the center is firmly set. A knife inserted into the middle should come out clean.
08 - Remove from the oven and let the casserole cool for 5 to 10 minutes before slicing. Garnish with additional fresh parsley if desired and serve warm.