Prep the oven and dish: Heat oven to 375°F (190°C).
Grease a 9x13-inch baking dish.
Par-cook the broccoli: Steam or blanch florets for 2–3 minutes until bright green and crisp-tender. Drain well. If using frozen, thaw and pat dry.
Sauté aromatics: In a large skillet, melt butter over medium heat.
Add onion and cook 3–4 minutes until softened. Stir in minced garlic for 30 seconds until fragrant.
Make the roux: Sprinkle in flour and whisk for 1 minute to cook off the raw taste. Don’t let it brown.
Build the sauce: Slowly whisk in chicken broth until smooth, then add half-and-half.
Simmer 3–4 minutes, stirring, until slightly thickened.
Season and enrich: Stir in sour cream, Dijon, salt, pepper, garlic powder, onion powder, and paprika. Taste and adjust seasoning.
Add the cheese: Off the heat, stir in 1 cup shredded cheese and 1/4 cup Parmesan until melted and silky.
Combine the filling: In a large bowl, mix chicken, broccoli, and cooked rice or pasta (if using). Pour over the sauce and fold gently to coat.
Assemble: Spread mixture in the baking dish.
Top with remaining shredded cheese and Parmesan.
Optional crunchy topping: Toss breadcrumbs with olive oil or melted butter. Sprinkle evenly over the cheese.
Bake: Bake 20–25 minutes until bubbling at the edges and golden on top. If needed, broil 1–2 minutes for extra color.
Rest and serve: Let it sit 5–10 minutes to set.
Garnish with chopped parsley or chives if you like.