Thai-Style Coconut Curry Salmon with Jasmine Rice and Crispy Shallots

A fragrant, silky Thai-inspired red curry with tender salmon fillets swimming in a luscious coconut milk broth, brightened with lime, ginger, and lemongrass. Served over fluffy jasmine rice and finished with golden crispy shallots, fresh herbs, and a squeeze of lime. Rich, aromatic, and deeply satisfying — this one tastes like it took all day but comes together in under an hour.

Recipe details

Yield
4 people
Prep time
20 minutes
Cook time
35 minutes
Total time
45 minutes

Ingredients

  • 1½ cups jasmine rice, rinsed until water runs clear (use your rice cooker for perfect results)
  • 2¼ cups water (for the rice cooker)
  • 4 fillets (about 170g / 6 oz each) salmon fillets, skin-on, patted dry (skin-on keeps the fish together beautifully in curry)
  • 2 tablespoons coconut oil
  • 6 large shallots, 4 finely sliced into thin rings (for crispy topping), 2 finely diced (for curry base)
  • 2-inch knob fresh ginger, peeled and finely grated
  • 5 cloves garlic, minced
  • 2 stalks lemongrass stalks, outer layers removed, bottom 4 inches bruised and finely sliced
  • 3 tablespoons Thai red curry paste (check label is soy-free — most brands are)
  • 2 cans (400ml / 14 oz each) full-fat coconut milk (shake well before opening)
  • 2 tablespoons coconut aminos (your go-to soy sauce swap — adds gorgeous umami depth)
  • 1 tablespoon fish sauce (adds deep umami — check it's soy-free)
  • 1 tablespoon palm sugar or brown sugar
  • 4 leaves kaffir lime leaves, central stem removed, leaves finely shredded (find these fresh or frozen at Asian grocers — totally worth it)
  • 100g / 3.5 oz baby spinach or bok choy, roughly chopped if using bok choy
  • 2 limes, 1 juiced, 1 cut into wedges for serving
  • a generous handful fresh Thai basil, leaves picked (regular basil works in a pinch but Thai basil is magic here)
  • 1 fresh red chili, finely sliced into rings (optional for heat, but makes it look gorgeous)
  • ½ cup neutral oil (for shallow-frying the crispy shallots)
  • to taste salt
  • ½ teaspoon ground turmeric (for a beautiful golden hue on the salmon)
  • ½ teaspoon ground cumin

Instructions

  1. Start your rice cooker: add 1½ cups rinsed jasmine rice and 2¼ cups water. Switch it on and let it do its thing — it'll be ready well before the curry is done.
  2. Make the crispy shallots: pour ½ cup neutral oil into your cast iron pan over medium heat. While the oil heats up, thinly slice 4 of the 6 shallots into rings. Test the oil with one shallot ring — it should sizzle immediately. Add all the sliced shallot rings and fry, stirring occasionally, until deeply golden and crispy, about 6–8 minutes. Watch them carefully — they can go from golden to burnt fast! Scoop them out with a slotted spoon onto a paper-towel-lined plate and sprinkle lightly with salt. They will crisp up further as they cool. Set the pan aside — you'll use it again.
  3. While the shallots cool, finely dice the remaining 2 shallots, mince 5 cloves of garlic, grate the 2-inch knob of peeled ginger, and finely slice the 2 lemongrass stalks (bruised first). Shred the 4 kaffir lime leaves (stem removed). Set everything together in a small bowl.
  4. Pat the 4 salmon fillets completely dry with paper towels — this is the secret to a good sear. Rub each fillet with a pinch of salt, ½ teaspoon turmeric, and ½ teaspoon cumin on the flesh side only.
  5. Pour off most of the oil from the cast iron pan, leaving about 1 tablespoon behind, and return to medium-high heat. When very hot, place the salmon fillets skin-side DOWN. Press gently for the first 10 seconds. Sear for 3–4 minutes until the skin is golden and crispy, then flip and sear the flesh side for just 1 minute. The salmon should be barely cooked through — it will finish in the curry. Remove from the pan and set aside on a plate.
  6. Reduce the heat to medium. Add 2 tablespoons coconut oil to the same cast iron pan. Once melted, add the diced shallots and sliced lemongrass. Sauté for 2–3 minutes until softened and fragrant.
  7. Add the minced garlic and grated ginger to the pan. Stir and cook for 1 minute until fragrant — don't let it burn.
  8. Add 3 tablespoons Thai red curry paste and stir it into the aromatics. Cook for 2 minutes, pressing and stirring, until the paste darkens slightly and smells incredible.
  9. Pour in both cans of full-fat coconut milk, stirring to combine everything. Add the shredded kaffir lime leaves, 2 tablespoons coconut aminos, 1 tablespoon fish sauce, and 1 tablespoon palm sugar. Stir well. Bring to a gentle simmer and let it bubble for 5 minutes, stirring occasionally, until slightly thickened.
  10. Add the baby spinach or bok choy to the curry and stir until just wilted, about 1 minute.
  11. Gently nestle the seared salmon fillets back into the curry, skin-side up. Spoon the sauce over them. Let them warm through for 2–3 minutes over low heat — don't boil or the salmon will overcook. Squeeze in the juice of 1 lime. Taste and adjust salt, fish sauce, or a little more sugar if needed.
  12. Spoon fluffy jasmine rice into four bowls. Ladle the curry alongside or over the top, making sure everyone gets a beautiful salmon fillet. Top generously with the crispy shallots, fresh Thai basil leaves, and sliced red chili. Serve with lime wedges on the side. Eat immediately!