In a large bowl, combine ground beef, breadcrumbs, grated Parmesan cheese, egg, minced garlic, Italian seasoning, salt, and black pepper until well mixed but not overworked.
Shape the mixture into small meatballs about an inch in diameter; set aside on a plate while you heat olive oil in a large pot over medium heat.
Add diced onion, minced garlic, and chopped celery to the pot; sauté until softened and fragrant before adding diced tomatoes along with their juices.
Pour in chicken or beef broth along with additional Italian seasoning, salt, and pepper; bring to a simmer before gently adding meatballs one by one.
Once meatballs are cooked through after about 15 minutes, add small pasta of choice; cook according to package instructions before stirring in heavy cream and chopped spinach or basil.
Ladle hot soup into bowls; top with extra Parmesan cheese and crushed red pepper flakes if desired before serving warm alongside crusty bread.