Heat the oil in a large Dutch oven or soup pot over medium-high heat. Once hot, add the onion, celery, and carrots, along with a pinch or two of salt. Cook until the vegetables are softened and starting to just turn brown, 8 to 10 minutes, stirring occasionally.
Add the garlic and red pepper flakes, and cook another 1 to 2 minutes until very fragrant.
Pour in a splash of vegetable broth to deglaze the pot as needed, stirring up any browned bits on the bottom of the pot. Add the remaining broth, potatoes, cannellini beans, and artichokes (if using), several cracks of pepper, and 1/2 teaspoon of kosher salt (1/4 tsp sea salt or table salt). Stir well. Nestle the bouquet garni into the soup.
Bring the soup to a boil. Then reduce heat, cover the pot, and simmer the soup for 15 minutes, or until the potatoes are tender.
While the soup is simmering, make the Gremolata. Finely chop the parsley and basil. Using a microplane, grate the garlic directly over the parsley and basil. Then zest the lemons on top of this mixture, taking care to not zest the white pith underneath the skin. Mix the garlic and lemon zest into the herbs and chop the herbs until they’re finely minced. Sprinkle with a bit of the coarse or flaky sea salt. When the soup is done simmering, remove the bouquet garni.Transfer half of the soup to a stand blender and blend until thick and smooth. Then return this pureed soup back to the pot and stir to incorporate. OR, for a one-pot option, use an immersion blender throughout half of the soup, but be sure to not blend it all - you want to retain some texture. Add the kale to the soup and simmer for 3 to 5 minutes, or until the kale is tender but still bright green. Taste for seasonings, adding salt to taste and a squeeze of lemon juice if desired.
Serve the soup in bowls and sprinkle a generous amount of the Gremolata over each bowl and a drizzle of the extra virgin olive oil.If storing leftovers, add the gremolata to a jar, drizzle some olive oil in there, and refrigerate. Spoon this over leftover soup.