Remove sausage from casings (if any) and crumble it into a very large pot. (I use a 9-quart Dutch oven.)
Cook, stirring occasionally, until sausage is browned and cooked through.
Remove sausage to a paper towel-lined plate and spoon out and discard all but about one tablespoon of fat from the pot.
Lower heat to medium. Add onion, carrots and celery, along with the salt, and stir to coat with fat. Cook for about 10 minutes, stirring occasionally, until carrots are fairly tender and veggies are lightly browned in spots.
Add garlic and cook, stirring, one minute more.
Stir in tomatoes and their juices, scraping up any browned bits from the bottom of the pot.
Pour in stock.
Bring to a boil over high heat, then reduce heat to simmer for ten minutes.
Meanwhile, cook pasta shells to al dente in a separate pot of well-salted water. Drain and toss with the olive oil.
Back in the big soup pot, add beans, reserved sausage, and spinach.
Simmer until spinach is wilted.
Off the heat, stir in parsley and black pepper.
Ladle soup into bowls, stirring some pasta shells into each. Serve with cheese to pass at the table.