01 - Pat the lamb shanks dry with paper towels and season generously with salt and pepper on all sides.
02 - In a large heavy-based pot or Dutch oven, heat the vegetable oil over medium-high heat. Sear the lamb shanks on all sides until deeply browned, about 3-4 minutes per side. Remove and set aside on a plate.
03 - In the same pot, add the sliced onions. Sauté over medium heat, stirring occasionally, until golden brown and caramelized, about 10 minutes.
04 - Add the minced garlic and grated ginger to the pot. Cook for 1-2 minutes, stirring constantly, until fragrant and raw aroma dissipates.
05 - Stir in the ground coriander, cumin, garam masala, turmeric, chili powder, black pepper, bay leaves, whole cloves, cardamom pods, and cinnamon stick. Toast for 1 minute, stirring constantly to release the essential oils.
06 - Add the canned chopped tomatoes and cook for 5 minutes, stirring occasionally, until they soften and release their juices to form a thick base.
07 - Return the browned lamb shanks to the pot. Pour in the stock and bring to a gentle simmer. Cover with a tight-fitting lid, reduce heat to low, and cook gently for 2.5 hours, turning the shanks every 30 minutes to ensure even cooking.
08 - Remove the lid and stir in the yogurt, fresh chopped tomatoes, and sliced green chili. Simmer uncovered for 45-60 minutes, stirring occasionally, until the lamb meat is falling off the bone and the sauce has thickened to a rich consistency.
09 - Skim any excess fat from the surface. Taste and adjust seasoning with salt if needed. Transfer to a serving platter, garnish generously with fresh cilantro, and serve with lemon wedges on the side.