Heat oil in a large heavy-bottomed cooking pot on medium heat. Add the bay leaves, garlic, ginger, chili and onion. Sautéé for 3-4 minutes on medium heat, tossing constantly until onion starts to turn golden. Reduce heat to low-medium and continue cooking for another 6-10 minutes, now stirring occasionally until onion is soft and gently caramelized.
Add the chopped coriander root and leaves, and peppercorns into the pot.
Combine the cumin, coriander, garam masala, chili powder, turmeric cardamom, cinnamon and cloves in a small bowl. Set aside 1 teaspoon for the potatoes and cauliflower. Add the remaining spice blend into the pot with the onions, coriander and peppercorns. Sautéé for a minute until aromatic.
Add the tomatoes plus juices, and salt. Increase heat to medium and mix well. Continue cooking for 5-6 minutes until tomatoes have blended in well and are cooked through.
Add the coconut milk and water. Reduce the heat to low. Cover and simmer for 20 minutes. The curry should be a rich and thickened.
Remove from heat. Taste for seasoning. Cool to room temperature and then blend to a smooth sauce in a blender till smooth. Store in the fridge for 4-5 days or freeze in freezer-safe containers for up to 2 months.