Make roux: Heat oil in a pan over medium low heat. When hot, add in flour and stir constantly until it turns light brown, about 15-20 minutes. (The roux should be thin and stirrable. If it's too thick, add extra oil about a teaspoon at a time until thinned.)
Once brown, add in curry powder and cacao powder and mix briefly, about 30 seconds. Take off from the heat and set the roux aside.
Make curry: Heat cooking oil in a large pot. Add onions and cook until lightly caramelized. Add potatoes, garlic, and ginger and cook 3 minutes.
Add carrots and celery and cook 1 minute.
Add tomato paste and stir for 30 seconds.
Add in broth, lentils, and grated apple. Bring to a boil then lower to simmer for 10-15 minutes until lentils and potatoes are just tender. Add extra broth/water if needed.
Add the zucchini, Worcestershire sauce, and soy sauce.
Remove some of the liquid into a bowl with the roux. Stir until roux dissolves.
Add roux to curry and simmer on low heat another 5 minutes.
You can serve immediately but the flavors in the curry develop more as the curry sits. Leftover curry is even more delicious the next day! Serve with rice.
Notes
Roux: If you love curry and make it weekly, or even every other week, I highly recommend making a big batch of roux (think 5x). It will save you so much time in the future and you'll be able to whip up a big batch of curry in no time! Let the roux cool to room temperature, then freeze in ice cube trays. Once the roux has frozen into blocks, pop them out of the ice cube tray and store in a freezer-safe bag.Apples: You can also use persimmons, pears, or peaches. Or use 1/2 cup of applesauce. Towards the end of cooking, taste the curry and add extra fruit puree if you want it sweeter.