Prep. Preheat the oven to 350˚F. Lightly grease a 9x13 baking dish with butter and set aside.
Cook the bacon. Add the diced bacon to a Dutch oven or large skillet set over medium heat and cook to a desired crispiness. Using a slotted spoon, transfer the cooked bacon from the pot to a plate and set it aside. Do not drain the bacon grease from the skillet.
Cook the veggies. To the bacon grease, add the Brussels sprouts and thawed green beans; season with salt and pepper, and cook for about 6 to 8 minutes, or until tender. Remove the vegetables from the pot and transfer them to the baking dish; set aside.
Cook the mushrooms and shallots. Add 2 tablespoons of butter to the pot and set it over medium-high heat. Stir in the shallots and mushrooms; cook and stir often for about 8 minutes, or until mushrooms are browned and shallots are caramelized. Transfer them to the baking dish. Set aside.
Make the cream sauce. To the same skillet/pot, add the remaining butter; melt it over medium-high heat. Whisk in the flour and cook for 1 minute while constantly whisking. Whisk in the milk until smooth. Continue to whisk for 3 to 4 minutes, or until the mixture is thickened and bubbly. Remove from heat. Add the Parmesan cheese, salt, and pepper, and whisk until well combined.
Combine and bake. Pour the cream sauce over the green beans mixture and stir until completely combined. Transfer the baking dish to the oven and bake, uncovered, for 15 minutes.
Add the toppings. Remove the casserole from the oven and sprinkle with previously cooked bacon pieces and breadcrumbs, or fried onions. Return to the oven and continue baking for 15 minutes, or until the top is golden brown.
Finish and serve. Remove the green bean casserole from the oven and let it stand for 10 minutes. Taste for salt and pepper, and adjust accordingly. Serve.