A little while ago, I was back in the Netherlands and stopped for dinner at a small Indonesian restaurant in Utrecht. As I looked through the menu, I spotted a dish I hadn’t thought about in years—Opor Ayam. The name instantly took me back. I used to eat this all the time when I was in the Navy, and later with friends. It was one of those go-to meals—comforting, flavorful, and filling.
Back then, we didn’t always make it from scratch. We’d either get it at an afhaalrestaurant, or someone would bring a big homemade batch to share. It was always mild and creamy, with just enough spice to keep it interesting. That meal in Utrecht reminded me how much I loved it. So I decided to make a version for Toine’s Kitchen that’s easy to prepare at home—but just as full of flavor.
Opor Ayam comes from Central Java. It’s traditionally made for festive occasions like Lebaran (Eid al-Fitr), but people eat it year-round because it’s so comforting. Chicken simmers in coconut milk with toasted kemiri nuts, lemongrass, galangal, and other warm spices. What sets it apart is its gentleness—it’s not spicy-hot like many Indonesian dishes, but it’s deeply aromatic and rich.
There are regional versions too. In Yogyakarta, opor is a little sweeter. In West Java, it might be thinner and more savory. Some use a whole chicken, others use eggs or tofu instead. My version uses chicken breast for convenience and includes just one chili pepper for a bit of warmth without overpowering the dish.
This recipe brings together tender chicken, creamy coconut milk, and a fragrant blend of spices for a dish that’s mild, warming, and deeply satisfying. Perfect over rice or ketupat, and even better the next day.
This comforting Indonesian dish simmers chicken in a rich coconut milk sauce, infused with toasted nuts, fragrant spices, and fresh aromatics like lemongrass, kaffir lime, and just a hint of chili. It’s creamy, mild, and full of warm flavor. Whether served with rice or rice cakes, this dish is a beautiful way to bring a little Indonesian tradition into your kitchen.
In a pan over medium heat, toast the kemiri or macadamia nuts. Toast them until they have a few brown spots all around.
Add the following to the bowl of a food processor, or mortar and pestle: – garlic – shallots – chili pepper (adjust to your heat preference; remove seeds for milder flavor) – toasted kemiri (or macadamia nuts) – ground coriander – ground cumin – ginger– saltYou can add a teaspoon or two of water or oil to help the mixture blend into a smooth paste. This paste forms the heart of the dish’s flavor, so make sure it’s well blended and aromatic.
Slice the galangal into slices
bruise the lemon grass
bruise the kaffir lime leaves
Sauté the spice paste
Heat 1 tablespoon of oil in a large Dutch oven or heavy pot over medium heat.
Add the spice paste and stir constantly for 2–3 minutes, until fragrant and slightly darker in color. The raw aroma of garlic and chili should mellow into a rich, warm fragrance.
Add the sliced galangal, bruised lemongrass stalk, bruised kaffir lime leaves, and salam leaves. Sauté for another 1–2 minutes to release their essential oils and develop depth.
Cook the chicken
Increase the heat, and add the chicken breasts to the pot, stirring well to coat with the spice and herb mixture. Let the chicken cook for about 3–4 minutes, just until it begins to turn opaque and is no longer pink on the outside.
Build the sauce
Add the following to the pan:– brown sugar– tamarind paste– bouillon cube
Pour in the coconut milk, and stir gently to combine. If the chicken isn't mostly submerged, you can add more coconut milk or water.
Simmer
Bring to a rolling boil over medium high heat, then reduce to a gentle simmer. Let the dish simmer uncovered for 25–30 minutes, stirring occasionally to prevent the coconut milk from sticking. The sauce will thicken slightly, and the chicken will become tender and fully infused with the flavors.Make sure the chicken is fully cooked (internal temperature of 74ºC – 80ºC (165 – 176F). If not, let it simmer longer.
Rest and serve
Turn off the heat and let the dish rest for about 10 minutes before serving. This allows the flavors to settle and gives the sauce time to thicken slightly more.
Serve warm over steamed white rice, or alongside lontong or ketupat. If you want a bit of texture, garnish with crispy fried shallots or serve with a spoonful of sambal on the side.
Video
Notes
Ingredient Substitutions
Kemiri nuts (candlenuts): Traditional and used for creaminess. If unavailable, macadamia nuts are a great substitute—just make sure to toast them first for deeper flavor.
Chili pepper: I use one medium chili here to balance the richness of the coconut milk. For mild results, remove the seeds before blending. If you’re sensitive to heat, use half a chili or omit it entirely.
Galangal: Brings a slightly citrusy note. If you can’t find it, use a small amount of ginger with a bit of lime zest.
Daun Salam: These give a subtle bay-like earthiness. If you can’t find them, use a regular bay leaf, but note the flavor will differ slightly.
Chicken options: While I use boneless chicken breast for ease, chicken thighs or even a cut-up whole chicken will give a richer, more traditional flavor. Just adjust simmering time as needed.
Serving Suggestions
Best served with steamed jasmine or long grain rice, which soaks up the sauce beautifully.
For a festive feel, pair it with ketupat or lontong—Indonesian rice cakes that are perfect for mopping up sauce.
Add a side of acar (pickled cucumber and carrot) for crunch and contrast.
Garnish with fried shallots or serundeng (spiced toasted coconut) for extra texture.
Storage & Make-Ahead
Let leftovers cool completely before storing.
Refrigerate in an airtight container for up to 4 days. The flavors continue to deepen, and it’s often better the second day!
Freeze for up to 2 months. Defrost in the fridge overnight and reheat gently over low heat with a splash of water if needed.
If the coconut milk appears to split when reheating, don’t worry—stir gently and it will usually come back together.
This one really took me back. I haven’t had Opor Ayam like this since my student days, when a good friend from Indonesia made it for us after a long week. The smell while it was cooking already brought back half the memories.
I followed the recipe pretty closely, just swapped bay for salam since that’s all I had. It still tasted just like I remembered.
Thanks, Toine. I’ve tried a bunch of your recipes, but this one hit a little different. Definitely keeping it in the rotation.
View Comments
This one really took me back. I haven’t had Opor Ayam like this since my student days, when a good friend from Indonesia made it for us after a long week. The smell while it was cooking already brought back half the memories.
I followed the recipe pretty closely, just swapped bay for salam since that’s all I had. It still tasted just like I remembered.
Thanks, Toine. I’ve tried a bunch of your recipes, but this one hit a little different. Definitely keeping it in the rotation.