Heat the oil in a large sauté pan with a lid over medium-high heat. Add the diced onion, serrano or jalapeño pepper, and salt. Sauté for about 2 minutes, until the onion begins 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 for about 1 minute, stirring constantly, until the chicken is evenly coated with 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 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 chopped 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 additional cilantro if desired.