Prep the zoodles: Spiralize the zucchini and place the zoodles on a paper towel–lined tray. Sprinkle lightly with salt and let them sit for 10–15 minutes to draw out excess moisture.
Pat dry before cooking.
Brown the beef: Heat 1 tablespoon oil in a large skillet over medium-high heat. Add the ground beef and break it up with a spatula. Cook until browned with some crisp edges, about 6–8 minutes.
Season lightly with salt and pepper as it cooks. Drain excess fat if needed, leaving about 1 tablespoon in the pan.
Sauté aromatics: Push the beef to one side. Add the remaining oil, onion, and a pinch of salt.
Cook 3–4 minutes until softened. Stir in the garlic and cook 30 seconds, just until fragrant.
Build flavor: Stir in tomato paste, smoked paprika, Italian seasoning, and red pepper flakes. Toast for 1 minute to deepen the flavor.
Add the beef broth and scrape up any browned bits. Simmer 2–3 minutes to slightly reduce.
Make it creamy: Turn heat to medium-low. Stir in the heavy cream and bring to a gentle simmer.
Add mozzarella and Parmesan. Stir until melted and the sauce is smooth and glossy. Taste and adjust salt and pepper.
Cook the zoodles: Add the zoodles to the skillet and toss with tongs to coat.
Cook 2–4 minutes, just until tender but still springy. Avoid overcooking to prevent watery noodles. If using lemon juice, stir it in now for brightness.
Finish and serve: Remove from heat.
Sprinkle with fresh parsley or basil. Serve hot right from the skillet.