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.
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.
Heat a bit of oil in a large pot. Add onions and cook about 10 minutes until lightly caramelized.
Add potatoes, garlic, ginger, carrots, and celery. Stir and add the vegetable broth.
Bring to a boil, then lower heat to medium low and add lentils, Worcestershire sauce, tomato paste, and grated apple. Simmer until the lentils are cooked and potatoes are tender.
Add roux, zucchini, and soy sauce and continue cooking until the zucchini are tender and the roux is completely dissolved. Add more vegetable broth or water as needed if you want a thinner curry.
Serve with rice.