Preheat your oven to 350°F (175°C).
Cut the cauliflower into florets and rinse in cold water.
Bring a large pot of salted water to a boil. Add the cauliflower florets and cook for about 5 minutes until slightly tender. Drain and set aside.
In a medium saucepan, melt the butter over medium heat. Add the flour and whisk constantly for about 1 minute to create a roux.
Gradually pour in the milk, whisking continuously until the mixture is smooth and thickened, about 5 minutes.
Stir in 1½ cups of shredded cheddar cheese, garlic powder, onion powder, salt, and pepper. Mix until the cheese has melted and the sauce is creamy.
Combine the cooked cauliflower with the cheese sauce and stir well to coat all the florets.
Transfer the cauliflower and cheese mixture to a baking dish and sprinkle the remaining ½ cup of cheddar cheese on top.
If using, sprinkle the Parmesan cheese over the top for an extra cheesy finish.
Bake in the preheated oven for 15-20 minutes, or until the cheese is bubbly and golden brown.
Remove from the oven and let cool for a few minutes. Garnish with fresh parsley if desired and serve warm.