For meatballs, add beef, pork, Parmesan cheese, egg, breadcrumbs, milk, onion, salt, pepper, garlic, parsley, and lemon zest to a large bowl. Mix just until combined—don’t overwork. Form into small meatballs (thumb size) and set aside.
For soup, heat olive oil in a large pot over medium heat. Add onion, celery, and carrot, and cook until softened, 5 to 7 minutes. Stir in garlic and cook for 30 seconds.
Add chicken bone broth, black pepper, basil, Italian seasoning, and red pepper flakes. Add the mini meatballs. Bring to a simmer and cook for 10 to 15 minutes.
Add the orzo directly to the pot and simmer until orzo is tender, 8 to 10 minutes), stirring occasionally.
Add spinach; stir until wilted. Reduce heat to medium-low, and stir in half-and-half. Heat gently, until hot but do not boil.
Turn heat to low; stir in pesto, Parmesan and lemon juice. Season to taste with salt.