Heat the olive oil in a large soup pot or Dutch oven over medium heat.
Add the onion, carrots, and celery. Cook for 6–8 minutes, stirring occasionally, until the vegetables begin to soften.
Add the garlic, Italian seasoning, thyme, salt, and pepper. Cook for about 30 seconds, or until fragrant. Add the white beans, broth, and bay leaf. Stir to combine.
Bring the soup to a gentle boil, then reduce the heat to low. Partially cover and simmer for 15–20 minutes, or until the vegetables are tender. Remove and discard the bay leaf.
Transfer about 2 cups of the soup to a blender and carefully blend until smooth. Return the blended soup to the pot. Alternatively, use an immersion blender to partially blend the soup directly in the pot, leaving plenty of whole beans and vegetables for texture.
Stir in the kale or spinach. Simmer for another 3–5 minutes, or until the greens are tender.
Reduce the heat to low and stir in the half-and-half, Parmesan, and lemon juice. Taste and adjust the salt and pepper as needed.
Ladle into bowls and top with additional Parmesan, parsley, or red pepper flakes. Serve with warm bread.