Bags of Spices

Favorite Recipes

Sweet-Savory

  • Bahmi Goreng — Indonesian Fried Noodles

    Bahmi Goreng — Indonesian Fried Noodles

    When Jane and I returned home from our honeymoon, we talked about what to have for dinner that first Sunday back. I said Indonesian sounded great—she had no idea what I meant. That conversation started what has since become one of our favorite family food traditions. The first time I made bahmi goreng for her, the kitchen filled with the aroma of garlic, chilies, and ketjap caramelizing in a hot wok, and she was instantly hooked. Ever since, this dish has represented warmth, comfort, and the sense of adventure we shared from the very beginning. Stir-fried noodles tossed with tender chicken, pork, and shrimp, fragrant with galangal and brightened with lime, bring a taste of Indonesia to our table time and again.


    Ingredients

    Noodles

    Proteins

    • 4 oz (115 g) small shrimp, peeled and halved lengthwise (optional)
    • 4 oz (115 g) chicken breast, thinly sliced
    • 4 oz (115 g) lean pork or thinly sliced beef

    Optional Quick Marinades

    • For Shrimp: ½ tsp light soy sauce, ¼ tsp fish sauce, ¼ tsp cornstarch, pinch white pepper
    • For Pork: 1 tsp ketjap manis, ½ tsp light soy sauce, ¼ tsp cornstarch, ¼ tsp minced garlic
    • For Chicken: 1 tsp ketjap manis, ½ tsp light soy sauce, ¼ tsp cornstarch, ¼ tsp minced garlic, pinch white pepper

    Vegetables

    • 2 cups (about 140 g) shredded white cabbage or Chinese cabbage
    • 4 green onions, cut into 1-inch (2.5 cm) pieces

    Bumbu (Spice Paste)

    • 3½ oz (100 g) shallots, roughly chopped
    • 4–5 cloves garlic
    • ½ oz (15 g) fresh galangal, sliced (or ½ tsp galangal powder)
    • 1–2 fresh red chilies, seeded if desired
    • 1 tbsp chopped cilantro stems

    Seasoning Sauce

    • 2 tbsp (30 ml) ketjap manis (Indonesian sweet soy sauce)
    • 1 tbsp (15 ml) light soy sauce
    • ⅓ tsp MSG (optional but recommended)
    • ¼ tsp ground white pepper
    • ⅛ tsp turmeric
    • 1 tsp fish sauce (optional, for added umami)
    • 1–2 tbsp (15–30 ml) hot water, as needed

    Cooking Oil

    • 3 tbsp (45 ml) peanut oil, divided

    Optional Flavor Boost

    • 1 tsp tomato paste

    Finishing & Garnishes

    • Fresh lime juice, to taste
    • Fresh cilantro leaves
    • Fried shallots
    • Reserved chili slivers
    • Omelet shreds (optional)
    • Fried onion flakes (optional)

    For Serving

    • Lime wedges
    • Sambal oelek or sambal badjak
    • Extra ketjap manis

    Directions

    Prepare the Noodles

    Cook the noodles according to package directions until just tender. Drain well and toss lightly with about 1 tsp of the peanut oil to prevent sticking.

    Spread the noodles out on a tray or colander and let them cool slightly while preparing the remaining ingredients.

    Optional: Marinate the Proteins

    If using the marinades, toss each protein with its respective marinade ingredients and let stand for 10–15 minutes while preparing the vegetables and bumbu.

    Prepare the Bumbu

    In a food processor or mortar and pestle, grind the shallots, garlic, galangal, chilies, and cilantro stems into a coarse aromatic paste.

    Prepare the Vegetables

    Shred the cabbage and cut the green onions into 1-inch (2.5 cm) lengths.

    Cook the Proteins

    Heat 1 tbsp (15 ml) peanut oil in a wok over high heat until shimmering.

    Add the chicken and pork (or beef) and spread them across the surface of the wok. Let them sear undisturbed for about 30 seconds before stir-frying.

    Continue stir-frying until the pork is cooked through and the thickest pieces of chicken register 165°F (74°C), about 2–3 minutes.

    Add the shrimp and cook briefly until pink. Transfer all proteins to a plate and set aside.

    Cook the Bumbu

    Add the remaining peanut oil to the wok.

    Add the bumbu paste and stir-fry for about 2 minutes until fragrant.

    If using the tomato paste, add it now and cook about 30 seconds until lightly caramelized.

    Build the Stir-Fry

    Add the cabbage and green onions and stir-fry for 1–2 minutes.

    Add the noodles and toss well with the aromatics.

    Return the proteins to the wok.

    Season and Finish

    Add the ketjap manis, soy sauce, MSG, white pepper, turmeric, and fish sauce if using.

    Toss everything over high heat until evenly coated and glossy. If the noodles absorb the sauce too quickly, add 1–2 tbsp (15–30 ml) hot water to loosen the sauce and help it coat the noodles.

    Finish with a squeeze of fresh lime juice.

    Serve

    Garnish with cilantro leaves, fried shallots, chili slivers, and optional omelet shreds or fried onion flakes. Serve with lime wedges, sambal, and extra ketjap manis.

    Yield: 4 servings.


    Notes

    Preparation

    • Chinese egg noodles or lo mein noodles work best for this dish.
    • If ketjap manis is unavailable, substitute 1 tbsp (15 ml) soy sauce mixed with 2 tsp brown sugar.
    • If using a less sweet ketjap manis, add ½ tsp brown sugar to balance the sauce.
    • A small amount of fish sauce adds savory depth similar to Indonesian shrimp paste.
    • The tomato paste adds deeper color and umami reminiscent of Dutch-Indo restaurant versions.

    Variations

    • Additional Vegetables: Bahmi goreng is highly adaptable—add vegetables like bean sprouts, julienned carrots, green beans, snap peas, or bell peppers depending on what you have on hand. Keep the total amount of added vegetables moderate so the noodles remain the focus. Cook additional vegetables quickly over high heat to avoid excess moisture and steaming.
    • Extra Heat: Increase the chilies or add sambal badjak for a spicier Javanese-style version.
    • Sesame Aroma: A light drizzle (about ½ tsp) sesame oil over the finished noodles adds subtle aroma.

    Serving Suggestions

    • Serve with krupuk (Indonesian shrimp crackers).
    • A fried egg on top is a popular Indonesian presentation.
    • A side of acar timun adds refreshing contrast.

    Make-Ahead & Storage

    • Best served fresh from the wok.
    • Leftovers keep up to 2 days refrigerated.
    • Reheat in a skillet with a splash of water or oil.
  • Ginger Caramel Chicken

    Ginger Caramel Chicken

    This Ginger Caramel Chicken leans into a Southeast Asian flavor logic that makes caramel chicken so addictive: sugar cooked down into a glossy glaze, fish sauce for deep savory backbone, rice vinegar for balance, and ginger + garlic for warmth and aroma. Palm sugar brings a rounded, toasty caramel note, while a final hit of fresh ginger, sesame oil, and lime keeps the finish bright and lively instead of heavy. It’s sweet-salty, sticky, and intensely flavorful—perfect over rice with plenty of cilantro and lime wedges on the side.


    Ingredients

    Chicken

    • 1½ lb (680 g) boneless, skinless chicken thighs, trimmed (left whole)
    • 1½ lb (680 g) boneless, skinless chicken breasts, cut into large pieces
    • 1–2 tbsp (15–30 ml) vegetable oil, as needed
    • ½ tsp table salt (lightly season the chicken)

    Caramel Sauce

    • ½ cup (100 g) brown sugar (preferably dark brown sugar)
    • ⅓ cup (about 70 g) palm sugar, finely chopped or grated
    • ⅓ cup (80 ml) fish sauce
    • ⅓ cup (80 ml) rice vinegar
    • ½ cup (120 ml) chicken stock
    • 2 tbsp fresh ginger, finely grated
    • 5 cloves garlic, crushed

    To Finish

    • 1–2 jalapeños, thinly sliced (to taste)
    • 1 bunch green onions, sliced
    • ½ cup (about 70 g) roasted peanuts, coarsely chopped
    • 1 tbsp fresh ginger, finely grated (added at the end)
    • 1 tsp toasted sesame oil
    • Juice of ½ lime (plus more to taste)
    • Fresh cilantro leaves, for garnish
    • Lime wedges, for serving

    Directions

    Prepare the Sauce

    In a bowl, combine brown sugar, palm sugar, fish sauce, rice vinegar, chicken stock, 2 tbsp grated ginger, and garlic. Stir well (some palm sugar may not fully dissolve yet).

    Brown the Chicken

    Pat the chicken dry and season lightly with ½ tsp table salt. Heat a large, wide sauté pan or skillet over medium-high heat. Add 1 tbsp (15 ml) vegetable oil.

    Working in batches, brown the thighs first (good color on both sides), then transfer to a plate. Brown the chicken breast pieces briefly until lightly golden, then transfer to a separate plate. Do not overcrowd the pan.

    Build the Caramel

    Carefully pour the sauce into the hot pan. Bring to a boil, scraping up any browned bits. Boil over high heat until the sauce reduces to a glossy, syrupy consistency—similar to maple syrup and able to coat the back of a spoon.

    Glaze and Simmer

    Return the chicken thighs to the pan and turn to coat in the caramel. Cook 2–3 minutes.

    Add the chicken breasts, reduce heat to medium, and simmer gently 6–8 minutes, turning occasionally, until evenly glazed. Check the thickest pieces of both thigh and breast with an instant-read thermometer; each should register 165°F (74°C) before finishing.

    Finish

    Add jalapeños (to taste), green onions, peanuts, and the remaining 1 tbsp fresh ginger. Cook 1–2 minutes, just until fragrant.

    Remove from heat and stir in sesame oil and lime juice. Taste and adjust lime or heat as desired.

    Serve

    Serve over steamed jasmine rice. Garnish generously with cilantro and serve with lime wedges on the side.

    Yield: 6 servings.


    Notes

    Preparation

    • Palm Sugar Substitution: If you don’t have palm sugar, use ½ cup dark brown sugar + an additional ⅓ cup dark brown sugar (for a total of ⅚ cup dark brown sugar).
    • Pan Choice: A wide skillet helps the sauce reduce quickly and glaze the chicken instead of braising it.

    Serving Suggestions

    • This dish pairs especially well with a crisp green salad dressed in our homemade ginger dressing, which helps cut the sweetness of the caramel glaze and refresh the palate. For a simple vegetable side, lightly blanched green beans—kept clean and restrained with just a touch of garlic and sesame oil—add freshness and texture without competing with the main flavors. Served together over jasmine rice, the plate feels balanced, bright, and complete.
    • Jasmine rice is ideal, but it’s also great over sticky rice or alongside a simple cucumber salad.
    • Serve with extra lime wedges so everyone can brighten their bowl to taste.

    Variations

    • More Heat: Add a spoonful of chili oil or sambal at the end (to taste) for extra kick without changing the glaze texture.
    • Heat Control: For milder heat, remove jalapeño seeds and ribs before slicing.

    Make-Ahead & Storage

    • Refrigerate leftovers in an airtight container for up to 4 days.
    • Reheat gently on the stovetop with a small splash of water or stock to loosen the glaze.
  • Babi Panggang — Indonesian Roasted Pork

    Babi Panggang — Indonesian Roasted Pork

    Working in the office in the city of Bussum in The Netherlands, we’d often order take-out from our favorite Chinese-Indonesian restaurant, Tong Fong, in the neighboring city of Hilversum. One stand-out item was their delicious Babi Panggang, which was always a part of our order. I later learned that Babi Panggang is the most ordered main dish at Indonesian restaurants throughout the Netherlands. This is my attempt to recreate the vibrant flavors and textures of this delicious dish.


    Ingredients

    • 2 lb pork shoulder or belly
    • Marinade

    • ¼ cup ketjap manis
    • 2 tbsp hoisin sauce
    • 2 tbsp rice cooking wine
    • 1 tbsp brown sugar
    • 1 tbsp fresh ginger, grated
    • 1 tbsp fish sauce
    • ½ tbsp sambal oelek
    • ½ tbsp sambal badjak
    • ½ tsp toasted sesame oil (optional)
    • ¼ tsp Chinese five spice (optional)
    • 2 cloves garlic, minced
    • Juice and zest of 1 lime
    • Sweet & Sour Red Sauce

    • 1 tbsp vegetable oil
    • 1 small onion, finely chopped
    • 2–3 cloves garlic, minced
    • 2 tsp grated ginger
    • ½ tsp sambal oelek
    • 3 tbsp tomato paste
    • ¼ tsp chicken powder
    • ¼ cup sweet chili sauce
    • 3 tbsp ketchup
    • 2 tbsp lime juice
    • 2 tbsp seasoned rice vinegar
    • 1 tbsp Tamarind Paste
    • 1 tbsp ketjap manis
    • 1 tsp fish sauce
    • ¾ cup chicken stock or water
    • ¼ cup brown sugar (adjust to taste)
    • 1 tbsp cornstarch mixed with 1 tbsp water

    Directions

    Marinate the Pork

    Combine all marinade ingredients, stirring until the sugar has completely dissolved. Pour into a resealable container or vacuum-seal bag. Add the pork, coating thoroughly. Seal and marinate in the refrigerator for 4–12 hours.

    Sweet & Sour Red Sauce

    Heat oil in a saucepan over medium heat. Sauté onion until lightly browned; add garlic, ginger, and sambal, and cook until fragrant. Add tomato paste and chicken powder; cook 1 minute to develop sweetness.

    Stir in sweet chili sauce, ketchup, lime juice, vinegar, tamarind, ketjap manis, fish sauce, stock or water, and brown sugar. Simmer 10 minutes to allow flavors to meld. Add the cornstarch slurry and simmer until glossy and thickened. Blend with an immersion blender and adjust thickness with additional stock, if needed.

    Preparation #1: Sous Vide

    Preheat sous vide bath to 170°F / 77°C for pork shoulder (130°F / 55°C for pork loin or tenderloin; 150°F / 65°C for pork belly). Submerge vacuum-sealed pork and marinade in the water bath and heat for 12–24 hours (2–8 hours for pork loin or tenderloin).

    Remove from the bag and pat dry. Brush with oil and finish under a broiler set to high for 4–5 minutes to crisp the top. Brush with red sauce during broiling and allow it to develop a few bits of char.

    Slice and serve over rice with a generous amount of sauce. Serve with acar ketimun (pickled vegetables), cucumber salad, fried cabbage, and/or blanched green beans tossed with garlic and sesame oil.

    Preparation #2: Oven

    Preheat oven to 350°F / 177°C. Place pork on a rack in a baking tray. Reserve marinade and boil in a saucepan for 5 minutes. Roast pork for 30–40 minutes per pound, or until internal temperature reaches 190°F / 88°C, basting with the boiled marinade halfway through.

    Rest pork for 20 minutes. Pat dry, brush with oil, and finish under a broiler set to high for 4–5 minutes to crisp the top. Optionally, baste with the red sauce while broiling and allow it to develop slight char.

    Slice and serve over rice with a generous amount of sauce. Serve with acar ketimun, cucumber salad, fried cabbage, and/or blanched green beans tossed with garlic and sesame oil.

    Preparation #3: Pellet Grill

    Preheat pellet grill to 250°F / 120°C. Smoke until internal temperature reaches 187°F / 86°C, basting halfway through. Rest pork for 30 minutes.

    Pat dry, brush with oil, and finish under a broiler set to high for 4–5 minutes to crisp the top. Optionally, baste with the red sauce while broiling and allow it to develop light char.

    Slice and serve over rice with a generous amount of sauce. Serve with acar ketimun, cucumber salad, fried cabbage, and/or blanched green beans tossed with garlic and sesame oil.


    Notes

    Preparation

    • Fattier cuts such as pork shoulder or belly are preferred, but pork loin or tenderloin (especially when using the sous vide method, with times and temperatures adjusted accordingly) can also be used. Take care not to overcook leaner cuts.
    • Preparation #1, Sous Vide, is the preferred method for the most tender and flavorful result.

    Serving Suggestions

    • Serve sliced Babi Panggang over rice with plenty of red sauce spooned on top.
    • Pair with acar ketimun, fried cabbage, cucumber salad, or blanched green beans with garlic and sesame oil.