Heat the olive oil in a large pot over medium heat. Add the onion, carrots, and celery, and sauté until the vegetables are tender, about 5-7 minutes.
Add the garlic and cook for another minute until fragrant.
Stir in the diced ham, cannellini beans, chicken broth, thyme, and bay leaf. Bring the mixture to a boil, then reduce the heat to low and let it simmer for 30 minutes.
Remove the bay leaf and discard. Use an immersion blender to puree a portion of the soup until it reaches your desired level of creaminess.
Stir in the heavy cream and season with salt and pepper to taste. Continue to simmer for another 10 minutes.
Serve hot, garnished with chopped fresh parsley.
