In a large pot, cook sausage, onion, carrots, and celery over medium heat until sausage is browned. Add garlic and saute until fragrant, about 1 minute. Add broth and water and cook over medium heat until carrots are tender, about 5-7 additional minutes.
Meanwhile, cook pasta shells according to package directions, drain, and set aside.
Once carrots are tender, stir tomatoes, chilies, and beans into soup mixture. Heat through. Stir in spinach and allow to wilt. Season with salt and pepper to taste.
If you're planning to eat the soup right away, you can go ahead and stir the cooked pasta in here. However, if you plan to have leftovers, keep the pasta separate and follow the directions below (this keeps the pasta from becoming soggy).
To serve, spoon about a half cup cooked pasta shells into bowls then ladle soup mixture over top. Sprinkle with chopped basil and fresh Parmesan, if desired.