Prep the oven and pan: Preheat your oven to 400°F (200°C).
Line a large baking sheet with parchment paper or lightly grease a baking dish.
Hollow the zucchini: Trim the ends, slice each zucchini lengthwise, and use a spoon to scoop out the center, leaving about 1/4 inch of flesh. Chop half of the scooped zucchini and save it for the filling. Pat the shells dry.
Season the boats: Place zucchini halves cut-side up on the pan.
Brush with 1 tablespoon olive oil and sprinkle with salt and pepper. Set aside.
Brown the beef: Heat the remaining olive oil in a large skillet over medium-high heat. Add ground beef and cook, breaking it up, until browned and no longer pink.
Drain excess fat if needed.
Add aromatics: Stir in the onion and cook 3–4 minutes until softened. Add garlic and the chopped zucchini centers. Cook 2–3 minutes more, stirring often.
Build the sauce: Add crushed tomatoes, tomato paste, Italian seasoning, paprika, and red pepper flakes.
Season with salt and black pepper. Simmer 5–7 minutes until slightly thickened and flavorful.
Fill the boats: Spoon the beef mixture evenly into each zucchini shell, mounding slightly. Sprinkle with mozzarella and Parmesan.
Bake: Bake 15–18 minutes, until the zucchini is tender and the cheese is melted and lightly golden.
If you like more color, broil for 1–2 minutes at the end.
Finish and serve: Let rest 5 minutes so the juices settle. Garnish with chopped parsley or basil. Serve warm.