Preheat the air fryer: Set it to 380°F (193°C).
Lightly spray the basket with olive oil to prevent sticking.
Soak the breadcrumbs: In a large bowl, combine breadcrumbs and milk. Let sit 2–3 minutes to soften. This creates a panade that keeps the meatballs moist.
Make the meatball mixture: Add ground meat, egg, Parmesan, garlic, parsley, 1 teaspoon salt, and 1/2 teaspoon black pepper to the breadcrumb mixture.
Mix gently with your hands until just combined. Don’t overwork it.
Form the meatballs: Scoop into 1.5-inch balls (about 18–20 meatballs). Lightly roll to smooth.
If the mixture is sticky, dampen your hands.
Air fry the first batch: Arrange meatballs in a single layer in the basket, leaving space between them. Air fry for 9–12 minutes, shaking the basket or turning the meatballs halfway. They’re done when browned and the internal temperature hits 165°F for poultry or 160°F for beef/pork.
Cook remaining meatballs: Repeat with any remaining batches.
Avoid crowding—airflow is key for crisp edges.
Boil the pasta: Meanwhile, bring a large pot of salted water to a rolling boil. Cook spaghetti to al dente per package directions. Reserve 1/2 cup pasta water, then drain.
Warm the sauce: In a large skillet or pot, heat marinara over medium-low.
Add a pinch of red pepper flakes if you like a little heat. Stir in a splash of pasta water to loosen if needed.
Combine: Transfer cooked meatballs into the warm sauce and simmer for 2–3 minutes so they absorb flavor. Toss spaghetti with a ladle of sauce to coat, then portion pasta into bowls and top with meatballs and extra sauce.
Finish and serve: Add a drizzle of olive oil or a small knob of butter, shower with Parmesan, and scatter chopped basil or parsley.
Taste and adjust salt and pepper.