Preheat your oven to 375°F (190°C). Lightly grease a 9x13-inch (or similar size) baking dish with the butter and set it aside.
Bring a medium pot of water to a boil and add about 1/2 teaspoon of the salt. Add the broccoli florets and blanch for 2–3 minutes, just until they turn bright green and slightly tender. Drain well and set the broccoli aside to let excess moisture evaporate.
In a large skillet, heat the olive oil over medium-high heat. Add the chopped onion and cook for 2–3 minutes until it begins to soften. Stir in the minced garlic and cook for another 30 seconds, just until fragrant.
Add the ground beef to the skillet, breaking it up with a spatula. Season with the remaining salt, black pepper, smoked paprika, dried Italian seasoning, and red pepper flakes if using. Cook, stirring occasionally, for 6–8 minutes, until the beef is browned and no pink remains. Drain off any excess grease if necessary, then return the skillet to the heat and stir to combine the seasonings evenly.
Reduce the heat to medium-low. Pour in the heavy cream and add the cream cheese cubes to the skillet with the seasoned beef. Stir continuously as the cream cheese melts, about 3–4 minutes, until you have a smooth, creamy sauce coating the beef.
Add 1 cup of the shredded cheddar cheese and all of the shredded mozzarella cheese to the skillet. Stir until the cheeses melt into the sauce and everything is well combined, creating a thick, cheesy beef mixture. Taste and adjust seasoning if needed.
Spread the blanched and drained broccoli florets evenly over the bottom of the prepared baking dish, arranging them in a single layer so they are distributed throughout the casserole.
Pour the cheesy beef mixture over the broccoli in the baking dish, using a spatula to spread it out evenly and gently nudge it down between the florets so the flavors mingle.
Sprinkle the remaining 1/2 cup of shredded cheddar cheese evenly over the top of the casserole, then finish with a light, even layer of grated Parmesan cheese to help create a golden, flavorful crust.
Place the baking dish in the preheated oven and bake for 18–22 minutes, or until the casserole is bubbling around the edges and the cheese on top is melted and lightly golden.
Remove the casserole from the oven and let it rest for about 5–10 minutes. This allows the creamy sauce to thicken slightly and makes it easier to slice and serve. Once slightly cooled, cut into portions and serve warm.