Main Courses
This Bali pork ribs recipe brings the bold flavors of Indonesia to your table with sweet-chili crunch over tender, sticky shreds. 🔥 I first discovered this technique while traveling through Bali, where the perfect balance of sweet, spicy, and umami transforms simple pork ribs into something unforgettable.
The marinade—packed with kecap manis, turmeric, and coconut milk—infuses deep flavor while keeping the meat juicy and fall-off-the-bone tender.
The magic happens during the slow cook, where the ribs develop that signature Bali sticky texture while caramelizing into crispy edges. I've perfected this method over years of testing, ensuring every bite delivers that addictive contrast of sweet-savory glaze and tender meat.
The secret? A two-stage cooking process that locks in moisture before finishing with a smoky char for depth.
What you'll end up with is a dish that's rich, aromatic, and impossible to resist—golden-brown ribs glistening with a glossy, slightly sticky sauce that's both sweet and tangy. The flavor profile is complex yet balanced, with hints of garlic, chili, and coconut that linger long after the last bite.
This is the kind of recipe that turns a simple weeknight dinner into a taste of Bali.
Serve with steamed jasmine rice to soak up every last drop of that flavorful sauce, or pair with fresh tropical vegetables for a complete meal. The ribs reheat beautifully too, making them perfect for meal prep or feeding a crowd. Let's get cooking!
Ingredients for bali pork ribs
Indonesian-inspired marinade meets smoky ribs for this unforgettable sweet-chili dish.
| Ingredient | Amount | Notes |
|---|---|---|
| Pork Ribs 🍖 | 3 lb | Baby back or spare ribs, trimmed |
| Kecap Manis 🍶 | ½ cup | Indonesian sweet soy sauce |
| Coconut Milk 🥥 | 1 can | Full-fat, 13.5 oz can |
| Brown Sugar 🍯 | ¾ cup | Packed, light or dark |
| Turmeric Powder 🌿 | 1 tbsp | Freshly ground preferred |
| Garlic Cloves 🧄 | 8 cloves | Minced, fresh preferred |
| Fresh Chili Peppers 🌶️ | 3 whole | Bird's eye or serrano, seeded |
| Lime Juice 🍋 | ¼ cup | Freshly squeezed |
| Fish Sauce 🍶 | 1 tbsp | Red Boat preferred |
| Olive Oil 🫒 | 2 tbsp | For searing ribs |
| Salt 🧂 | 1 ½ tsp | Kosher or sea salt |
| Black Pepper 🌶️ | 1 tsp | Freshly ground |
| Jasmine Rice 🌾 | 2 cups | Uncooked, for serving |
| Red Chili Flakes 🔥 | 1 tbsp | For garnish, optional |
Kecap manis is the soul of this recipe—Red Boat or Bango brands are my go-tos, but any quality Indonesian sweet soy sauce works. The coconut milk should be full-fat for that rich, velvety texture. Trader Joe's or Asian markets carry great options. Fresh turmeric has more punch than the powder, but the powder is fine if that's what you've got. For the chili peppers, bird's eye or serrano give that authentic heat—adjust based on your spice tolerance. The ribs should be baby back or spare ribs, trimmed of excess fat for cleaner cooking. Costco often has great deals on pork ribs in bulk.
No kecap manis? Substitute with 1/4 cup soy sauce plus 1/4 cup brown sugar, but you'll lose some depth. Running short on coconut milk? Heavy cream or half-and-half works in a pinch, though the flavor won't be identical. Fresh garlic and lime are ideal, but dried garlic powder at half the amount and bottled lime juice will do. The fish sauce adds that umami kick—Red Boat is my top pick, but any reputable brand is fine. For extra smokiness, add a dash of smoked paprika to the marinade. The brown sugar can be swapped for maple syrup if you prefer a less refined sweetener.
Marinate the ribs for at least 4 hours—overnight is even better. The sauce keeps in the fridge for 5 days or freezes for 3 months. For meal prep, cook the ribs ahead and reheat with a splash of water to revive the sauce. The jasmine rice pairs perfectly—cook it in a rice cooker or pot with equal parts water for 15 minutes of simmering. Store cooked ribs in an airtight container with any leftover sauce to keep everything moist. Garnish with red chili flakes just before serving for that final pop of color and heat.
Why You'll Love This Recipe
- One-Pan Magic: The ribs go in raw, the sauce bubbles down—no flipping, no fuss. Just 30 minutes of hands-off simmering while you stir the kecap manis and coconut milk together. That’s my kind of cooking.
- Sweet-Savory Balanced: The brown sugar caramelizes into the ribs while the turmeric gives it that golden glow, but it’s the kecap manis that steals the show—sticky, smoky, and just sweet enough to make you lick the plate. Honestly, I’ve never met a sauce that does this much with so little effort.
- Leftovers That Don’t Suck: These ribs taste better the next day—crispier edges, more flavorful sauce. I portion them into containers with steamed rice and a quick fried egg, and boom: instant lunch for three days. (Yes, even on a Tuesday night.)
- Budget-Friendly Feast: Pork ribs stretch further than you’d think when braised, and the ingredients? Basic pantry staples. A can of coconut milk, a bottle of kecap manis, and a handful of spices turn a cheap cut into something that feels like a restaurant dish. My wallet thanks me every time.
Step-by-step instructions for Bali pork ribs
Transform tough ribs into tender, sweet-chili perfection with this authentic Balinese method.
🔥 Step 1: Sear the Ribs for Deep Flavor
Preheat your oven to 275°F. Pat the 3 lb pork ribs dry with paper towels—this ensures maximum crispiness. Heat 2 tablespoons olive oil in a large oven-safe skillet over medium-high heat until shimmering.
Place the ribs meat-side down in the skillet and sear for 5-6 minutes until they develop a deep golden-brown crust. Flip carefully and sear the other side for another 5-6 minutes. This initial sear locks in juices and builds the foundation for that signature caramelized bark. Don't rush—you'll know they're ready when they release easily from the pan.
👨🍳 Step 2: Build the Sweet-Chili Marinade
While the ribs sear, combine 0.5 cup kecap manis, 0.75 cup brown sugar, 1 tablespoon turmeric powder, 8 cloves minced garlic, 3 seeded and chopped fresh chili peppers, 0.25 cup lime juice, and 1 tablespoon fish sauce in a large bowl. Stir until the brown sugar dissolves completely, creating a thick, aromatic paste.
Remove the seared ribs from the skillet and place them in the marinade, turning to coat evenly. Let them soak for 10 minutes at room temperature—this allows the marinade to penetrate the meat and tenderize the fibers. The mixture will look glossy and vibrant, with the turmeric giving it that signature golden hue.
🥘 Step 3: Slow-Braise Until Fork-Tender
Transfer the marinated ribs back to the skillet, meat-side up. Pour in 1 can coconut milk and scrape up any browned bits from the bottom of the pan—these contain concentrated flavor. Bring to a gentle simmer over medium heat for 5 minutes to blend the marinade and coconut milk.
Cover the skillet tightly with foil and transfer to the preheated 275°F oven. Braise for 2.5-3 hours, rotating the skillet halfway through cooking. The ribs are done when they easily pull apart with two forks and the sauce has reduced to a thick, glossy glaze. The aroma should be intoxicating—sweet, smoky, and slightly spicy.
🔥 Step 4: Finish with Crispy Edges
Remove the ribs from the oven and increase the oven temperature to 425°F. Uncover the skillet and broil the ribs for 3-5 minutes, watching closely to prevent burning. This final step creates those coveted crispy edges while keeping the meat tender. You'll see the sauce bubble vigorously and the ribs develop a deeper caramelization.
Let the ribs rest for 5 minutes before serving. This resting period allows the juices to redistribute, ensuring each bite is moist and flavorful. Meanwhile, cook the 2 cups jasmine rice according to package instructions—its delicate aroma will complement the rich, spicy ribs perfectly.
🍽️ Step 5: Serve with Garnish
Arrange the ribs on a platter, spooning the reduced coconut milk sauce over the top. Garnish with 1 tablespoon red chili flakes for a final burst of heat. Serve immediately with the jasmine rice, offering extra sauce on the side for dipping. Each bite should deliver a perfect balance of tender meat, sweet-spicy marinade, and creamy coconut richness.
Real talk: the first time I made these, I nearly overcooked the ribs. Now I set a timer for the 2.5-hour mark and check for tenderness at 2.75 hours—this ensures they're never dry. The secret is patience and that final broil for crispy edges. Trust the process, and you'll have restaurant-quality Bali pork ribs at home.
Pro Tips For Making Bali Pork Ribs
- Blister Before Braising: Get those ribs searing hot in a dry pan first—no oil needed. The Maillard reaction from the meat’s own juices will lock in flavor before the sweet-savory sauce even touches them. I used to skip this, and the ribs always tasted like they were playing second fiddle to the kecap manis.
- Reduce the Coconut Milk: Simmer that coconut milk down to a thick, syrupy consistency before adding the ribs—about half the original volume. Thin milk just dilutes the sauce, and you’ll end up with soggy ribs instead of a glossy, caramelized glaze. (Yes, it takes 10 minutes, but it’s worth it.)
- Balance the Sweetness: Taste the kecap manis and brown sugar mix before adding turmeric—if it’s too cloying, splash in 1-2 tablespoons of lime juice or a pinch of salt. The turmeric’s earthiness needs room to shine, not get drowned in syrup. I learned this after serving a batch that tasted like dessert.
- Cover Tightly, Low and Slow: Use heavy-duty foil or a lid that seals completely—no gaps—and cook on the lowest heat setting your stove offers. The goal is 2.5–3 hours of gentle bubbling, not a rushed hour where the sauce burns and the ribs stay tough. (I know, I know—patience isn’t your strong suit either.)
Creative variations of this bali pork ribs
Balinese Street Food Twist
For a street-food-inspired version, add 1 tbsp grated ginger and 1 stalk lemongrass (bruised and chopped) to the marinade. Serve with sambal matah (Balinese chili jam) on the side—just mix 2 tbsp red chili flakes, 1 tbsp palm sugar, and 1 tbsp lime juice.
This adds a smoky, tangy kick that Balinese street vendors swear by. I first tried this version at a warung in Ubud, and it became my go-to for quick weeknight dinners. 🌶️
Coconut Curry Fusion
Transform these ribs into a full curry by adding 1 tbsp curry powder and 1 can diced tomatoes to the marinade. After braising, simmer the ribs in 1 cup coconut milk with 1 tbsp fish sauce and 1 tbsp lime juice for 15 minutes.
Serve over jasmine rice with steamed bok choy. This fusion version is inspired by my time cooking in Bali’s coastal regions, where curries are a staple. The extra coconut milk keeps the meat ultra-tender. 🥥
Spicy Pineapple Glaze
Swap the brown sugar for 1 cup pineapple juice and add ½ cup diced pineapple to the marinade. After braising, reduce the sauce with 2 tbsp pineapple jam for a sticky, fruity glaze.
Garnish with fresh pineapple chunks. This tropical twist is perfect for summer gatherings and reminds me of the vibrant fruit markets in Bali. The acidity cuts through the richness beautifully. 🍍
Heritage Pig Upgrade
For next-level flavor, use heritage pork ribs from my Gloucestershire Old Spots pigs—they’re leaner and more flavorful than commercial cuts. The natural fat renders perfectly during the slow cook, keeping the meat juicy.
I’ve tested this with ribs from local butchers in Atlanta, and the difference is noticeable. If you can’t find heritage pork, look for pasture-raised ribs with good marbling. 🐷
Smoky Grill Finish
For a smoky twist, transfer the braised ribs to a grill or grill pan after the oven stage. Brush with ½ cup kecap manis mixed with 1 tbsp soy sauce and grill over medium heat for 3-4 minutes per side.
The char adds depth that complements the sweet-spicy marinade. This method works especially well on a charcoal grill, but a gas grill with wood chips will do too. 🔥
Meal Prep Hack
Cook the ribs ahead and store them in an airtight container with any leftover sauce. Reheat in a skillet over low heat with 2 tbsp water to revive the sauce.
I often prep these for 3-4 days of easy lunches. For extra crispiness, broil for 2 minutes before serving. This is a game-changer for busy weeks—just reheat and enjoy. ⏰
Nutrition facts
Frequently asked questions
Can I use spare ribs instead of baby back ribs for this recipe?
Spare ribs work beautifully—they're meatier and have more connective tissue, which actually makes them even more tender when slow-cooked. Just note that spare ribs may take 30-45 minutes longer to become fork-tender. Trim any excess fat first to help the marinade penetrate better.
How do I adjust the spice level if I can't handle heat?
For milder ribs, remove the seeds from the chili peppers before mincing, and reduce the red chili flakes garnish to ½ tablespoon. You can also swap fresh chilies for 1 teaspoon mild paprika instead of the full 1 tablespoon called for. The kecap manis and coconut milk already provide plenty of depth without the heat.
Can I make this recipe in a slow cooker instead of the oven?
Yes! After searing the ribs, transfer them to your slow cooker with all marinade ingredients (except coconut milk). Cook on Low for 6-7 hours or High for 4-5 hours, then add the coconut milk and cook 30 more minutes on High. The texture will be slightly softer but still delicious. For crispy edges, finish with 3-5 minutes under a broiler.
What's the best way to reheat leftovers without drying them out?
Reheat in a skillet over low heat with 2 tablespoons water or coconut milk to revive the sauce. Cover for 5 minutes to steam, then uncover to crisp up. Avoid microwaving—it turns the ribs rubbery. For extra crispiness, broil for 2 minutes after reheating. Store in an airtight container with sauce to keep everything moist.
Why did my ribs turn out dry instead of tender?
Most likely, they cooked too long at high heat. The key is patience—275°F for 2.5-3 hours is ideal. If you're unsure, use the fork test: ribs should pull apart easily. Also check your oven temperature with an oven thermometer. Another common mistake is skipping the sear—this step creates a flavorful crust that helps retain moisture.
