Heat the oil in a large sauté pan with a lid over medium-high heat. Add the onion, serrano or jalapeño pepper, and salt. Sauté for about 2 minutes, until the onion starts to soften.
Add the chicken in an even layer and cook, stirring occasionally, until the chicken is slightly browned in spots.
Stir in the garlic, ginger, curry powder, cumin, turmeric, and black pepper. Cook, stirring constantly, for about 1 minute, until the chicken is evenly coated in the spices.
Pour in the crushed tomatoes and stir to combine.
Add the sweet potatoes and coconut milk, scraping up any browned bits from the bottom of the pan. Bring the mixture to a gentle boil, then reduce to a simmer. Cover and cook for about 15 minutes, stirring occasionally, until the sweet potatoes are fork-tender.
Taste and adjust seasoning with additional salt and pepper, if needed. Add the spinach, cover, and cook for another 5 minutes until the spinach is wilted.
Turn off the heat, drizzle in the lemon juice, and stir in the chopped cilantro.
Serve hot over rice or with flatbread, garnished with extra cilantro if desired.