Warm 2 tablespoons extra virgin olive oil in a large pot or Dutch oven over medium heat. Add 1 large onion, 2 medium carrots, and 1 stalk celery (all chopped) and cook for 5 to 7 minutes, stirring occasionally, until they start to soften. Stir in 3 cloves garlic (grated) and ¼ teaspoon red pepper flakes and cook for 30 seconds, until fragrant.
Add 2 cans cannellini beans (rinsed), 4 cups vegetable broth, 1 teaspoon salt, and ¼ teaspoon black pepper. Bring to a gentle boil, then lower the heat and simmer uncovered for about 10 minutes, until the vegetables are tender.
Transfer about one-third of the soup to a blender or a tall container with an immersion blender. Add 3 tablespoons tahini, 4 tablespoons fresh lemon juice, and 1 teaspoon grated lemon zest, then blend until smooth and creamy. Pour the creamy mixture back into the pot and stir well.
Bring the soup back to a gentle simmer. Add 1 pound potato gnocchi and cook according to the package directions, usually 2 to 4 minutes, until tender. Stir occasionally so the gnocchi don't stick to the bottom. If the soup gets too thick, add a splash of broth.
Stir in 3 cups baby spinach, if using, and cook for about 1 minute, until wilted. Turn off the heat. Taste and adjust with more salt, black pepper, lemon juice, or lemon zest if needed. Serve topped with fresh dill.
