Preheat and prep. Heat your oven to 375°F (190°C). Grease a 9x13-inch baking dish or similar casserole pan.
Cook the pasta. Boil in salted water until just shy of al dente (about 1 minute less than package directions).
Drain and set aside. Don’t overcook—it will finish in the oven.
Brown the beef. In a large skillet over medium-high heat, cook the ground beef, breaking it up as it browns. If there’s excess fat, drain most of it, leaving a little for flavor.
Soften aromatics. Add the diced onion to the skillet and cook 3–4 minutes until translucent. Stir in the minced garlic and cook 30 seconds, just until fragrant.
Build the sauce. Stir in tomato paste, Italian seasoning, smoked paprika, salt, and pepper.
Add crushed tomatoes and simmer 3–5 minutes to meld flavors.
Add creaminess. Reduce heat to low and stir in sour cream (or cream cheese). Taste and adjust salt and pepper. The sauce should be rich, slightly tangy, and well seasoned.
Combine with pasta. Add the drained pasta to the skillet and toss to coat evenly.
If your skillet is small, mix everything in a large bowl.
Assemble the casserole. Spread half the pasta mixture in the baking dish. Sprinkle with half the cheddar and mozzarella. Add the remaining pasta and top with the rest of the cheese.
Bake. Place in the oven for 18–22 minutes, until the cheese is melted and lightly golden around the edges.
For a deeper crust, broil for 1–2 minutes at the end, watching closely.
Rest and serve. Let the casserole sit for 5–10 minutes so it sets up. Garnish with chopped parsley or green onions and serve warm.