How to Make It
Heat 3 tablespoons oil in a Dutch oven over medium. Add 1/2 cup onion, 2 garlic cloves, and 1/2 teaspoon salt; cook 3 minutes. Add red pepper flakes; cook 30 seconds. Add tomatoes, basil, sugar, 1/4 teaspoon black pepper, and oregano. Bring to a simmer; cook 1 hour, stirring occasionally, using a slotted spoon to break up tomatoes into smaller pieces.
Preheat oven to 350°F.
Tear bread into small pieces, and combine with milk in a bowl; stir until bread is moistened. Let stand 10 minutes.
Heat remaining 1 tablespoon oil in a large skillet over medium. Add remaining 1/2 cup onion, mushrooms, 1/2 teaspoon salt, and remaining 1/4 teaspoon black pepper; cook 3 minutes. Add remaining 2 cloves garlic; cook 1 minute. Remove from heat; let cool slightly. Combine beef, bread mixture, egg, fennel seeds, and parsley in a bowl. Add mushroom mixture; combine with hands. Shape into 24 meatballs. Arrange on 2 foil-lined baking sheets coated with cooking spray. Bake at 350°F for 18 to 20 minutes. Place meatballs in tomato sauce; reduce heat to low.
Run zucchini through a spiralizer to create noodles, or cut into ribbons with a vegetable peeler. Set aside.
Bring 6 quarts water to a boil in an 8-quart pot. Add pasta and remaining 1/2 teaspoon salt; cook 8 to 9 minutes or until al dente. Reserve 1/2 cup cooking liquid, and then drain pasta. Return pasta to pot; add zucchini and reserved 1/2 cup cooking liquid; stir 1 to 2 minutes, until zucchini noodles soften.
Place 1 1/2 cups noodles into each of 8 bowls. Top each with 3 meatballs, 1/2 cup sauce, 2 teaspoons cheese, and parsley.