Roughly chop half the onions, celery, carrots, and garlic. Place in a large pot with the carcass, bay leaves, thyme, parsley stems, and peppercorns. Barely cover with cold water and salt to taste. Bring to a boil over high heat, reduce heat, and simmer for two hours, skimming foam as necessary. When the stock is cool, strain into a smaller pot. Remove the meat from the bones and return to the stock with some of the vegetables.
Clean the spinach, removing large stems. Chop the remaining onion, celery, and carrots and mince the garlic and parsley. Heat half the olive oil in a wide pan. Add the onion, celery, and carrots, half the garlic and parsley, and the dried herbs. Sauté over medium-high heat for several minutes. Add the tomatoes, drained and chopped, and cook for several minutes more until the vegetables are soft. Add the vegetable mixture to the stock with salt and pepper to taste, bring to a boil, and add the noodles.
While the noodles are cooking, add the remaining oil to the pan. Sauté the remaining garlic briefly over high heat, add the spinach, and cook just until wilted. Add the spinach and garlic to the pot with the left-over meat, if desired, and the remaining parsley.
Reheat the soup. Serve with Italian bread and grated parmesan.