Gather your sauce ingredients.
Over medium-high, heat oil in a medium saucepan. When the oil is hot add the black cardamom, cumin seeds, and bay leaves to the pan. When the cumin begins to crackle and turn a shade darker reduce the heat to medium.
Add the onion. Sauté for 2 minutes and then add the ginger-garlic paste; sauté for another minute.
Add the tomato and cook for 4 to 6 minutes until the mixture thickens and the oil begins to separate on the top and along the sides of the pan.
Add the marinated chicken and turn the heat up to medium-high; stir frequently for 2 minutes.
Stir in all the spices—ground cumin, ground coriander, chili powder, garam masala, salt, kasoori methi (if using), and milk. Mix until combined and stir for another minute. Reduce heat to low, cover, and cook until the chicken is cooked through. This will take about 6 to 10 minutes, depending on the size of your chicken pieces. Uncover and stir in the spinach. Cook gently for 2 minutes to allow the flavors to meld.
Final adjustments: Add the optional butter, ghee, heavy cream, yogurt, or coconut milk to enrich and mellow the flavors. Taste for salt, acid (lemon juice), and heat (ground red or black pepper). Serve hot with warm rotis, naan, or white rice.
Keeping: Chicken saag keeps well in the refrigerator for 3 to 4 days so it is a perfect make-ahead dish. It also freezes well. After you have made it to your satisfaction, double the recipe next time so that you can freeze half for some dinner insurance. To freeze, transfer the cooled chicken to an airtight container and freeze for two to three months.