Preheat oven to 400°F (200°C). Bring a large pot of salted water to a boil. Add the Brussels sprouts and cook until just fork-tender, about 4-5 minutes. Drain and set aside.
In a large cast-iron (or oven-safe) skillet over medium heat, melt butter. Add onion, and cook until softened, about 3-4 minutes.
Stir in the garlic and crushed red pepper flakes, stirring for 30 seconds.
Sprinkle the flour over the onion mixture and stir constantly for 1 minute to create a roux.
Gradually whisk in the chicken broth. Once the sauce thickens slightly, pour in the heavy cream and whisk until smooth and creamy, about 2-3 minutes.
Season with salt and pepper.
Add the cooked Brussels sprouts to the skillet and gently fold them into the sauce, making sure each piece is coated evenly.
Sprinkle the Gruyère and Parmesan cheese evenly over the top.
Transfer the skillet to the oven and bake for 15 minutes, or until bubbly and golden brown on top. For a deeper golden finish, broil for 1-2 minutes at the end, watching carefully so it doesn't burn.
Let the gratin sit for 5 minutes before garnishing with chopped parsley. Serve warm.