Prep the zucchini: Trim the ends and slice each zucchini lengthwise. Use a spoon to scoop out the center, leaving about 1/4 inch of flesh to form a sturdy boat. Reserve about half of the scooped zucchini flesh, chop it finely, and pat it dry with a paper towel.
Season the boats: Brush the cut sides with olive oil, then sprinkle with salt and pepper.
Set aside while you make the filling.
Cook the filling: Heat a skillet over medium. Add the sausage and onion, breaking the meat into small crumbles. Cook until the sausage is browned and the onion is soft, 5–7 minutes.
Stir in the garlic and chopped zucchini flesh; cook 1–2 minutes more.
Add sauce and spices: Stir in marinara, Italian seasoning, and red pepper flakes. Simmer 2–3 minutes to thicken slightly. Taste and season with a pinch of salt and pepper if needed.
Remove from heat and let it cool for a minute so it thickens more.
Preheat the air fryer: Set to 375°F (190°C) for 3 minutes. Lightly spray the basket with cooking spray.
Fill the boats: Spoon the sausage mixture into each zucchini. Top evenly with mozzarella, then sprinkle breadcrumbs and Parmesan over the top for crunch.
Air fry in batches if needed: Arrange the boats cut-side up in the basket without crowding.
Air fry at 375°F (190°C) for 10–14 minutes, until the zucchini is tender when pierced and the tops are golden and bubbling.
Finish and serve: Let the boats rest for 3–4 minutes to set. Garnish with chopped basil or parsley. Serve warm.