To a large Dutch oven or heavy-bottomed large stockpot, add the olive oil, onion, and saute over medium-high heat for about 4 to 5 minutes; stir frequently.
Add the carrots, celery, and saute for about 4 more minutes, or until vegetables are becoming tender; stir frequently.
Add the garlic and saute for 1 minute or until fragrant; stir nearly constantly; turn down the heat and set aside.
Drain and rinse both types of beans; do so separately and first add all the cannellini beans to the canister of a large high-speed blender, then add half the garbanzo beans, and blend momentarily until smooth. Tip - You don't want or need this to be a fine puree. A few pulses just to break up the beans is what you're looking for, not baby food smooth.** (See Notes)
Add the puree to the Dutch oven, along with broth, thyme, rosemary, marjoram, salt, pepper, and bring to a simmer over medium-high heat for about 7 minutes; stir intermittently.
Add the kale and allow it to wilt and cook briefly, about 3 minutes; stir intermittently.
Turn off the heat and add the lemon zest, juice, stir to combine, and taste the soup. Tip - If it tastes at all flat, it likely needs more salt and possibly pepper; don't be afraid to add them.
Optionally garnish with freshly grated Parmesan, optional parsley, and serve with crusty bread or dinner rolls if desired. Soup will keep airtight in the fridge for up to 5 days or in the freezer for up to 4 months.