Prep the oven and pan. Heat the oven to 400°F (200°C).
Lightly grease a 9x13-inch baking dish or a similar casserole pan.
Par-cook the cauliflower. Bring a large pot of salted water to a boil. Add the cauliflower florets and cook for 3–4 minutes, until just tender but still firm. Drain well and let steam off for a minute so excess moisture evaporates.
Sauté the aromatics. In a large skillet, warm the olive oil over medium heat.
Add diced onion with a pinch of salt and cook 4–5 minutes until soft. Stir in the garlic and cook 30 seconds until fragrant.
Brown the beef. Add the ground beef to the skillet. Season with salt and black pepper.
Cook, breaking it up with a spoon, until no longer pink and lightly browned, 5–7 minutes. If there’s excess fat, spoon some off.
Build the sauce. Stir in tomato paste, crushed tomatoes, Worcestershire sauce, paprika, oregano, thyme, and red pepper flakes. Add the broth and bring to a gentle simmer.
Cook 3–5 minutes to thicken slightly. Taste and adjust seasoning.
Make it creamy. Take the skillet off the heat and stir in the sour cream or Greek yogurt until smooth. This gives the mixture a creamy, tangy backbone that balances the cheese.
Combine with cauliflower. Add the drained cauliflower to the skillet and gently toss to coat every floret with the beef mixture.
If your skillet isn’t large enough, do this in a big bowl.
Assemble the bake. Transfer everything to the prepared baking dish. Sprinkle the shredded cheese evenly over the top. For a nice golden finish, reserve a small handful of cheese to add halfway through baking.
Bake. Place in the oven and bake for 18–22 minutes, until bubbling around the edges.
For extra color, switch to broil for the last 1–2 minutes, watching closely so it doesn’t burn.
Rest and serve. Let the casserole rest for 5–10 minutes to set. Top with chopped parsley if you like. Serve warm with a crisp side salad or steamed green beans.