Heat olive oil in a large, heavy-bottomed soup pot. Saute onion and celery until softened, about 20 minutes. Add garlic, ginger, pepper, turmeric, cumin, red pepper flakes, and cinnamon. Cook until the spices smell fragrant, about 3 minutes.
Add tomato and tomato paste and bring the mixture to a simmer. Cook, stirring until mixture thickens somewhat, then add 2 1/2 teaspoons salt, lentils, and garbanzos. Add 16 cups of water.
Bring to a boil, then partially cover and lower to a simmer.
After one hour, taste for salt, pepper, and other spices. Add rice. Cook for another hour, adding more water to keep the consistency like cream. The beans should be very soft.
Serve, and encourage your guests to garnish the soup with lemon, herbs, harissa, and olive oil.