Heat oil in a non-stick pan over medium-high heat. Add the cumin and nigella seeds and let them sizzle for a few seconds. Add the chopped onions and sauté, stirring frequently, until they turn lightly golden, about 5-6 minutes.
Add the garlic and ginger and sauté until the raw smell disappears, about 30 seconds. Add the tomatoes, spice powders (coriander, cumin, turmeric, red chili, black pepper (if using)) and salt. Cook until the tomatoes are soft and the oil begins to separate from them, about 4-5 minutes.
Add the potatoes, cauliflower, and green chili pepper. Stir-fry for about 4-5 minutes.
Turn the heat down to low-medium, cover, and let cook for about 20 minutes, stirring once or twice in between.*
When the vegetables are cooked and all the moisture is gone, turn off the heat and add the soy sauce, garam masala, and lemon juice (if using). Mix well and garnish with chopped cilantro. Serve with roti, naan, or rice.
*The goal is to let the vegetables cook in their own juices, adding only a bit of water if absolutely necessary.