Preheat the oven to 375° and lightly grease an 8x8 baking dish. (You can also use a different sized baking dish that's about 2 quarts in size.)
Wash the head of cauliflower and cut off the florets. Chop florets into bite-size pieces and try to make them close to the same size.
Saute cauliflower pieces with some olive oil, salt, pepper, and garlic powder over medium heat. Cook until it’s partially softened but still have a little crunch in the middle. (This could take 10-15 minutes, depending on how large you cut the pieces.)
Take cauliflower out of the pan and set it aside.
Melt butter in the same pan and whisk in flour. Keep whisking and slowly start pouring in milk. Keep gently whisking until all incorporated.
When the milk mixture is warmed, start adding cheese one handful at a time. Continue to whisk and add the cheese in handfuls until all is smooth and melted. Season with salt, garlic powder, and pepper.
When the cheese sauce is smooth, mix it with cauliflower and transfer into a greased baking dish.
Spread cauliflower evenly in the baking dish and top it off with shredded Mozzarella cheese.
Bake it for about 15 minutes. You can turn on the broiler until the top is golden but keep an eye on it.