In a large bowl, combine ground beef, breadcrumbs, Parmesan cheese, parsley, minced garlic, egg, salt, and pepper. Mix until just combined and shape into meatballs about one inch in diameter.
In a large pot over medium heat, heat olive oil. Add meatballs carefully and cook until browned on all sides, about five minutes. Remove from pot and set aside.
In the same pot, add chopped onion, diced carrots, and diced celery. Sauté for about five to seven minutes until softened. Stir in minced garlic and cook for another minute.
Pour in crushed tomatoes and chicken or vegetable broth. Stir in dried basil, oregano, and optional red pepper flakes. Bring to a gentle simmer.
Return browned meatballs to the pot and let simmer for about fifteen to twenty minutes until cooked through.
Stir in fresh spinach (or kale) and small pasta. Cook until pasta is al dente, about eight to ten minutes. Adjust seasoning before serving.
Ladle soup into bowls and garnish with extra Parmesan cheese and freshly chopped parsley if desired.