In a large bowl, combine the ground beef, breadcrumbs, Parmesan cheese, egg, garlic, oregano, salt, and pepper. Mix well until all ingredients are fully incorporated.
Form the mixture into small meatballs, about 1 inch in diameter. You should get roughly 24-30 meatballs.
In a large pot, heat a tablespoon of olive oil over medium heat. Add the meatballs in batches, browning them on all sides. Remove the meatballs from the pot and set aside.
In the same pot, add another tablespoon of olive oil if needed and sauté the carrots, celery, and garlic for about 5 minutes until they soften.
Pour in the beef broth and add the diced tomatoes. Bring the mixture to a simmer.
Gently return the browned meatballs to the soup and let them cook in the simmering broth for about 15-20 minutes, until they are cooked through.
Add the zucchini and spinach (or kale) to the pot and cook for an additional 5 minutes, until the greens are wilted and the zucchini is tender.
Taste and adjust seasoning with salt and pepper as desired.
Spoon the soup into bowls and garnish with fresh parsley before serving.
Notes
Serve the soup in deep bowls, sprinkling an extra bit of Parmesan on top, and include a crusty piece of bread on the side for dipping.