Preheat & prepare: Preheat the oven to 375°F (190°C). Lightly grease a 9×13-inch (23×33 cm) baking dish and set aside.
Make the meatball mixture: In a large bowl combine the ground beef, breadcrumbs, grated Parmesan, milk, chopped onion, egg, salt, black pepper, garlic powder, dried oregano, and dried basil. Mix gently until just combined—avoid overworking the meat.
Form meatballs: Shape the mixture into meatballs about 1–1½ inches (2.5–3.8 cm) in diameter. You should get roughly 18–24 small meatballs depending on size.
Cook spaghetti: Bring a large pot of salted water to a boil and cook the spaghetti according to package directions until al dente. Drain and set aside.
Sear meatballs: While the pasta cooks, heat a tablespoon of olive oil in a skillet over medium heat. Add the meatballs in batches and brown on all sides until they develop color (they will finish cooking in the oven). Transfer browned meatballs to a plate.
Assemble the casserole: Spread half of the marinara sauce across the bottom of the prepared baking dish. Spread the drained spaghetti over the sauce and pour the remaining marinara on top; gently toss to coat the pasta evenly. Nestle the seared meatballs across the top of the sauced spaghetti.
Top with cheese & bake: Sprinkle the shredded mozzarella and grated Parmesan evenly over the casserole. Cover the dish with foil and bake for 25 minutes.
Finish baking: Remove the foil and bake 10–15 more minutes, or until the cheese is melted and bubbly and the meatballs reach an internal temperature of 160°F (71°C). If desired, broil for 1–2 minutes to lightly brown the cheese—watch closely to avoid burning.
Rest & serve: Let the casserole rest 5 minutes before serving. Garnish with fresh basil leaves if desired and serve hot.