In a large mixing bowl, combine the ground beef, breadcrumbs, Parmesan cheese, egg, minced garlic, black pepper, salt, and Italian seasoning. Mix until just combined, being careful not to overwork the meat.
Form the mixture into small meatballs, about 1 inch in diameter. You should get about 16-20 meatballs.
In a large pot or Dutch oven, heat olive oil over medium heat. Add the chopped onion, carrots, and celery, sautéing for about 5-7 minutes until the vegetables are softened.
Carefully add the meatballs to the pot, cooking until browned on all sides, about 5 minutes.
Pour in the beef broth and diced tomatoes. Stir to combine and bring the soup to a gentle simmer.
Add the green beans and simmer for an additional 10-15 minutes, until the meatballs are cooked through and the flavors have melded together.
Finally, stir in the spinach (or kale) and cook for another 2 minutes until wilted.
Taste and adjust seasonings as needed.
Serve hot, garnished with fresh parsley for a pop of color and flavor.