Heat olive oil in a large pot over medium-low heat and sauté onion in hot oil until soft and translucent, about 5 minutes. Add garlic; cook and stir until fragrant, about 30 seconds. Add chicken broth, bay leaf, Italian seasoning, sea salt, and pepper; bring slowly to a simmer, about 5 minutes.
Meanwhile, prepare meatballs: Combine ground beef, beaten egg, bread crumbs, 2 tablespoons Parmesan cheese, onion powder, Italian seasoning, Worcestershire sauce, garlic salt, and pepper in a large bowl. Mix until well combined. Roll mixture into tiny ½-inch meatballs.
Drop meatballs carefully, one at a time, into simmering soup in the pot. Bring to a slow simmer and cook for 20 minutes. Skim off any foam that comes to the surface with a spoon and discard.
Add gnocchi, escarole, and carrot; bring soup back to a simmer. Stir in half-and-half, spinach, and basil. When gnocchi rise to the top, remove from heat.
Discard bay leaf and garnish with ¼ cup Parmesan cheese to serve.
