Heat the olive oil in a large pot over medium-high heat. When the oil is hot but not smoking, add the sausage.
Cook the Italian sausage for approximately 3-4 minutes until browned. Stir frequently, breaking up any large pieces with a wooden spoon or spatula.
Lower the heat to medium and add the onions and carrots to the pot. Cook for 2-3 minutes until the onions are translucent, stirring frequently.
Add the garlic and Italian seasoning. Cook for 1 minute, stirring frequently.
Add the flour to the pot and cook for 1 minute, stirring constantly.
Add the chicken broth to the pot while gently scraping any bits off the bottom. Raise the heat to high and bring the broth to a boil.
Once the soup comes to a boil, lower the heat to medium-low and cover the pot. Simmer for 15 minutes, stirring occasionally.
Add the potatoes and the cannellini beans, stir well. Raise the heat to medium-high and bring the soup to a full boil. Then, lower the heat to medium-low, cover and continue cooking the soup for 15-20 minutes, or until the potatoes are tender. Stir often at first to make sure the potatoes are not sticking to the bottom of the pot, then stir occasionally. Also, keep the broth simmering, raise or lower the heat as needed.
Add the spinach to the soup. Heat gently until the spinach wilts, which will only take a minute or two. Stir occasionally.
Remove the pot from the heat. Add the half and half, stirring until incorporated. Place the pot over low heat to warm through, but do not let it come to a boil.
Taste and add salt if needed. As a reference, we didn’t add extra salt to ours. Serve with a generous piece of bread, if desired, and enjoy.