In a mixing bowl, combine all the meatball ingredients: ground beef, breadcrumbs, Parmesan cheese, egg, garlic, oregano, salt, and black pepper. Mix thoroughly until well combined.
Form the mixture into small meatballs, about 1 inch in diameter. You should have approximately 20 meatballs.
In a large pot, heat the olive oil over medium heat. Add the chopped onion, carrots, and celery. Sauté for about 5 minutes, or until the vegetables begin to soften.
Add the minced garlic and cook for an additional minute until fragrant.
Pour in the beef broth and diced tomatoes, followed by the dried basil, salt, and black pepper. Bring the mixture to a boil.
Once boiling, carefully add the meatballs to the pot. Reduce heat to medium-low and simmer for about 20 minutes, or until the meatballs are cooked through.
In the last few minutes of cooking, add the spinach or kale to the soup and stir until wilted.
Adjust seasoning to taste, if needed. Serve hot in bowls.