Preheat your oven to 400°F (optional, if you prefer baking the meatballs instead of frying).
In a mixing bowl, combine the ground beef, breadcrumbs, Parmesan cheese, parsley, egg, minced garlic, salt, and black pepper. Mix well until all ingredients are fully incorporated.
Roll the meat mixture into small meatballs, about 1 inch in diameter.
In a large pot, heat olive oil over medium heat. Add the diced onion, carrots, and celery. Sauté for about 5 minutes until the vegetables are tender.
Add the minced garlic and sauté for another minute until fragrant.
Pour in the chicken or vegetable broth and the diced tomatoes, then add the dried Italian herbs. Bring to a simmer.
Carefully add the meatballs to the bubbling broth. Simmer for about 15-20 minutes, or until the meatballs are cooked through and floating on the surface.
Stir in the spinach and cook for an additional 2-3 minutes until wilted. Taste and adjust seasoning with salt and pepper as needed.
Serve hot in bowls, garnished with extra Parmesan cheese if desired.