Heat 2 tablespoons of oil in a large, heavy-bottomed pan over medium heat until shimmering and fragrant. Add the chopped onion and cook, stirring occasionally, until golden and soft, about 8-10 minutes, smelling sweet and caramelized.
While the onions cook, peel and dice the potatoes into 1-inch cubes. Mince the garlic cloves and ginger finely to release their pungent aroma.
Add the minced garlic and ginger to the caramelized onions, stirring for 1-2 minutes until fragrant and slightly golden. This will fill your kitchen with a warm, spicy aroma.
Stir in the cumin, coriander, turmeric, and chili powder, toasting the spices for about 30 seconds until they shimmer and release their fragrant oils. Be careful not to burn them—lower the heat if necessary.
Add the diced potatoes to the pan, stirring to coat them evenly with the spiced onion mixture. Cook for 5 minutes, allowing the potatoes to start turning translucent around the edges.
Pour in the coconut milk and vegetable broth, stirring well to combine. Bring the mixture to a gentle simmer, then reduce the heat to low. Cover the pan and cook for about 15 minutes, or until the potatoes are tender when pierced with a fork.
While the curry simmers, cut the broccoli into small florets. After the potatoes are tender, add the broccoli to the curry and stir. Cover again and cook for another 5-7 minutes, until the broccoli is bright green and just tender, but still crisp.
Remove the lid and simmer uncovered for 2-3 minutes to thicken the sauce slightly. Taste and adjust the seasoning with salt and a squeeze of lemon juice if desired, for brightness. The sauce should be creamy and coat all the vegetables evenly.
Turn off the heat and let the curry rest for 5 minutes; this allows flavors to meld and the sauce to thicken further. Serve hot, garnished with fresh herbs if you like, alongside rice or flatbread for a complete meal.