Steam spinach and wring out excess water. Transfer to a food processor or blender and process until puréed. Set aside.
Heat 1 tablespoon ghee or neutral oil in a large skillet over medium heat. Add cubed paneer and fry until golden brown on a couple of sides, about 3-5 minutes. Homemade paneer will need a little less time, whereas store-bought can handle 5 minutes. Transfer paneer to a plate.
Return skillet to medium-low heat. Heat remaining 3 tablespoons ghee. Add onions, ginger, garlic, and serrano chiles. Cook slowly, stirring regularly, until the mixture becomes a rich medium brown color. Don't skip this part! Add a little water, 1 tablespoon at a time, as needed, if the mixture is burning or drying out.
Add the garam masala, coriander powder, and cumin powder. Sprinkle with a little water to moisten. Cook, stirring frequently, until the spices are fragrant, about 3-5 minutes.
Add the spinach to the skillet and stir well. Add 1 teaspoon salt, half and half, yogurt, and fenugreek leaves. Stir to combine well, then add the paneer and stir gently. Cook about 5 minutes then taste and add more salt as needed.
Serve over steamed basmati rice and top with fresh chopped cilantro. Serve with warmed naan brushed with more ghee.