If using dry beans: Soak the beans overnight. In a large pot or in an Instapot, cover the dried beans with 3-4 inches of water. Add a large bay leaf and 4 peeled cloves of garlic to the pot. Simmer beans until tender.
To a large pot add a generous drizzle of oil over medium heat, and add the diced onion, leek, carrot and celery. Sauté the vegetables until softened, about 6-8 minutes. Add the chopped tomato (or tomato paste), 2 peeled garlic cloves, 1 bay leaf, thyme and chopped herb stems to the pot. Stir and sauté for another minute.
Add the liquid to the pot. If I’ve made the beans from dried, I like to add a few cups of the bean cooking liquid in addition to broth.
Add salt and pepper to taste. Bring to a simmer and allow to simmer for 20 minutes.
Add the cooked or canned beans to the pot and simmer for another 20-25 minutes. Taste and season as needed. Turn off the heat and add the lemon juice.
At this point, you can serve the soup as is. However, I prefer to remove about a third from the pot. I blend the remaining soup until light and creamy, using an immersion blender. I add the remaining soup back to the pot. This makes the soup satisfyingly smooth, with pops of beans and vegetables.
To make the zhug: To a food processor add the de-seeded jalapenos, parsley, cilantro, garlic, cardamom, caraway and salt. Pulse until finely chopped. If you don’t have a food processor, you can also chop the ingredients finely by hand. Transfer the chopped mixture to a bowl. Add the oil and lemon juice, and stir until combined. Zhug will last up to 2 weeks in a well-sealed container, or it can be frozen for up to 3 months.
Serve topped zhug to your taste.