Slice the tops off the eggplants, then slice them in half lengthwise. Cut each half once more lengthwise. Lay the slices on their flat sides and cut lengthwise into thirds. Finally, slice horizontally to form cubes.
Transfer to a baking sheet, drizzle with the olive oil, salt, and pepper. Bake for 25 minutes, stirring halfway through, until golden brown.
In a large saucepan, heat the coconut oil over high hat. Add the onions, stir for 1 minute, then reduce the heat to medium-low and cook, stirring occasionally, until the onions are golden brown, about 8 minutes.
Stir in the chili powder, cardamom, and smoked paprika. Cook until fragrant, about 1 minute.
Stir in the ground coriander, ½ teaspoon of black pepper, turmeric, garlic, and ginger. Cook for a few minutes more, stirring constantly.
Add the chopped tomatoes, coconut milk, water, and the roasted eggplant.
Bring the curry to a simmer, then reduce to low heat, cover, and simmer for 25 minutes. The sauce should reduce and thicken slightly.
Serve the curry warm over rice, topped with chopped cilantro.