Preheat the oven to 375°F (190°C).
Cut the cauliflower into evenly sized 1-inch (2.5 cm) pieces. Add the cauliflower to a pot fitted with a steamer basket and add about 1 inch (2.5 cm) of water to the bottom of the pot. Cover and steam for about 10 minutes, just until the cauliflower is fork-tender but not soft. Remove from the heat, drain well, and let the cauliflower sit uncovered for a few minutes so excess steam can escape.
2 heads (~1800 g total) cauliflower
While the cauliflower steams, melt the butter in a large oven-safe, heavy-bottomed skillet over medium heat. Once fully melted, whisk in the flour and cook for about 3 minutes, stirring constantly, to remove the raw flour taste without browning.
¼ cup (57 g) butter, ¼ cup (30 g) all-purpose flour
Slowly pour in the warmed milk while whisking continuously to create a smooth sauce. Continue cooking, stirring often, until the sauce thickens slightly and coats the back of a spoon.
2 cups (480 g) whole milk
Reduce the heat to low and add 2 cups of the grated cheddar cheese. Stir until the cheese is fully melted and the sauce is smooth. Add the sour cream, garlic powder, onion powder, salt, and black pepper, and stir until evenly combined.
2½ cups (250 g) grated white cheddar cheese, ¼ cup (60 g) sour cream, ¼ tsp (1 g) garlic powder, ¼ tsp (0.5 g) onion powder, ½ tsp (3 g) table salt, ¼ tsp (0.5 g) black pepper
Add the steamed cauliflower to the skillet and gently toss until all pieces are well coated in the cheese sauce. Sprinkle the remaining ½ cup of grated cheddar evenly over the top.
Transfer the skillet to the oven and bake uncovered for 25 to 30 minutes, until the edges are bubbling and the top is lightly melted. Let rest for a few minutes before serving to allow the sauce to set slightly.