Bring large pot of salted water to boil. Cook rigatoni according to package directions until al dente, about 10-12 minutes. Reserve 1 cup pasta water before draining.
Heat olive oil in large skillet over medium heat. Add diced onion and cook 3-4 minutes until softened. Stir in minced garlic and cook 1 minute until fragrant.
Add ground beef to skillet, breaking apart with spatula. Cook 6-8 minutes until browned completely with no pink remaining. Drain excess grease if needed.
Stir in tomato paste, Italian seasoning, red pepper flakes if using, salt, and pepper. Cook 2-3 minutes, stirring constantly until tomato paste darkens and becomes fragrant.
Pour in beef broth and heavy cream, stirring to combine. Simmer 5-7 minutes, stirring occasionally, until sauce thickens slightly.
Reduce heat to low. Gradually stir in Parmesan cheese in handfuls, allowing each addition to melt before adding more. Add mozzarella and stir until sauce is smooth and creamy.
Add cooked rigatoni to skillet and toss until well coated. Use reserved pasta water to adjust consistency if needed, adding a few tablespoons at a time.
Taste and adjust seasoning. Transfer to serving plates and garnish with fresh parsley or basil. Serve hot with additional Parmesan on side.
Notes
Use freshly grated Parmesan for smoothest sauce. Pre-grated cheese contains anti-caking agents that can make sauce grainy.
Reserve pasta water before draining. The starch helps sauce cling to pasta and adjusts consistency.
Cook pasta al dente as it will absorb some sauce and continue softening slightly.
Add Parmesan gradually to prevent clumping and ensure smooth, creamy sauce.