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 slightly browned.
Stir in the garlic, ginger, curry powder, cumin, turmeric, and black pepper. Cook for about 1 minute, stirring constantly, to coat the chicken 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 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 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.