To make the meatballs, stir the first five ingredients in a bowl to blend. Add the remaining meatball ingredients and combine well with your hands. Using a half tablespoon or a mini-ice cream scooper, scoop the meat mixture into your hands and from them into 1-inch diameter meatballs. Set aside on a plate or baking sheet.
To make the soup, warm the olive oil in a large pot over medium heat. Add the onions, carrots and celery and sauté until the onions are translucent.
Add the broth, beans and 2 teaspoons salt. Bring to a boil and carefully add the meatballs (if using escarole, add this now too.) Lower to a simmer and cook until the meatballs are cooked through, about 8-10 minutes.
Stir in the spinach and grated cheese and cook until spinach is just wilted.
Taste for seasoning. Serve with additional grated cheese, if desired.