Heat the oil in a pot over medium high heat and brown the beef. Transfer the beef to a plate and set aside. (Leave the browned bits in the pot, those are going to give our harira tremendous flavor.)
Add the onions and cook until soft and translucent and they turn golden, 6-8 minutes. Add the celery, garlic and ginger and cook for another two minutes. Add the tomatoes, tomato paste, spices preserved lemon and harissa (if using) and let the mixture simmer for a couple of minutes.
Return the beef to the pot with the chickpeas and lentils. Add the broth, bring to a boil, cover and simmer over low heat for one hour. Add the rice, cover and continue to simmer for another 30 minutes.
Stir in the olives, cilantro and parsley and simmer for another 5 minutes. Add salt and pepper to taste and more harissa if you prefer it spicier.
Garnish with some chopped fresh cilantro and celery leaves. If you like, serve the harira with lemon wedges to squirt in some lemon juice. Harira is traditionally served with a side serving of dried dates.
This soup tastes even better the next day as the flavors have had time to deepen. Note though that the lentils and rice will absorb more of the liquid so you will have to add some broth to thin it out. Alternatively, if you plan to make this dish ahead, you follow the directions to simmer the soup for an hour and then the next day you can add the rice and simmer it for the remaining 30 minutes.