Thai basil meatballs bring the bold flavors of pad kra pao - Thailand’s most popular stir-fry - into an easy weeknight dinner. Ground pork meatballs are pan-seared until golden, then tossed in a spicy garlic-basil sauce with fish sauce, oyster sauce, and chilies. Served over jasmine rice with a crispy fried egg, this 30-minute meal delivers the heat and umami of Bangkok street food without leaving your kitchen.

This recipe is different from Thai luk chin meatballs - those are bouncy street food appetizers served on skewers. These are a full dinner: saucy, spicy, and designed for a rice bowl.

Key Takeaways

  • Pad kra pao sauce is the star - fish sauce, oyster sauce, soy sauce, garlic, and chilies create the signature Thai street food flavor.
  • Thai basil (horapa) is the accessible substitute for holy basil (kra pao). Both work; holy basil is more peppery and authentic.
  • Bird’s eye chilies bring real heat - start with 3 for medium, use 5 for authentic Thai spiciness.
  • Crispy fried egg on top is not optional. The runny yolk mixes with the sauce and rice.
  • 30 minutes total - 10 minutes prep, 20 minutes cooking. One skillet for the meatballs and sauce.

How to Make Thai Basil Meatballs (Pad Kra Pao Style)

  1. Make the meatball mixture. Combine pork, panko, fish sauce, soy sauce, garlic, and green onion in a bowl. Mix until just combined - do not overwork or the meatballs will be dense. (See prep hint: Mix Until Just Combined)
  2. Shape into meatballs. Wet your hands and roll into 24 meatballs, about 1.25 inches across. A medium cookie scoop keeps them uniform.
  3. Sear the meatballs. Heat oil in a large skillet or wok over medium-high heat. Brown meatballs in batches for 2 to 3 minutes per side until golden on the outside. They do not need to be cooked through yet. Transfer to a plate.
  4. Fry the aromatics. In the same pan (do not wipe it out), add chopped garlic and chilies. Stir-fry for 30 seconds until fragrant. The browned bits from the meatballs add flavor.
  5. Make the pad kra pao sauce. Add oyster sauce, fish sauce, soy sauce, sugar, and water to the pan. Stir to combine and bring to a simmer.
  6. Return meatballs to the pan. Toss in the sauce and cook for 3 to 4 minutes until the sauce thickens and the meatballs are cooked through to 160F (71C).
  7. Add Thai basil. Toss the basil leaves into the pan and stir for 30 seconds until just wilted. (See prep hint: Thai Basil vs Holy Basil)
  8. Fry the eggs. In a separate small pan, fry eggs sunny-side up until the edges are crispy and the yolk is still runny, about 2 to 3 minutes. (See prep hint: Bird’s Eye Chilies)
  9. Serve. Spoon jasmine rice into bowls. Top with meatballs and sauce. Place a fried egg on each bowl. Garnish with cucumber and sliced chili.

Ingredients

For the meatballs:

  • 1 lb (450 g) ground pork, 80/20
  • 1/4 cup panko breadcrumbs
  • 1 tbsp fish sauce
  • 1 tsp soy sauce
  • 2 cloves garlic, minced
  • 1 green onion, finely sliced
  • 1 tbsp neutral oil, for searing

For the pad kra pao sauce:

  • 5 cloves garlic, roughly chopped
  • 3 to 5 Thai bird’s eye chilies, sliced (adjust to taste)
  • 2 tbsp oyster sauce
  • 1 tbsp fish sauce
  • 1 tbsp soy sauce
  • 1 tsp sugar
  • 1 cup packed Thai basil leaves (or holy basil if available)
  • 2 tbsp water

For serving:

  • Jasmine rice, cooked
  • 4 eggs, for frying
  • Sliced cucumber
  • Thai chili, sliced (optional)

What Is Pad Kra Pao?

Pad kra pao (ผัดกระเพรา) is Thailand’s most ordered dish. Ground meat - usually pork or chicken - is stir-fried at high heat with garlic, bird’s eye chilies, and holy basil in a savory sauce of fish sauce, oyster sauce, and soy sauce. It is always served over jasmine rice with a crispy fried egg (khai dao) on top.

The dish originates from Thai-Chinese cooking traditions and is the default order at street stalls, food courts, and restaurants across Thailand. The key flavor comes from holy basil (bai kra pao), which has a peppery, clove-like taste distinct from sweet Thai basil.

In the West, Thai sweet basil (horapa) is more commonly available and works well as a substitute. The flavor is slightly different - more anise-like than peppery - but still delicious.

Why Meatballs Work for Pad Kra Pao

Traditional pad kra pao uses loose ground meat, but meatballs offer a few advantages for home cooks:

  • Even cooking. Meatballs cook uniformly without needing constant stirring in a hot wok.
  • Sauce cling. The seared surface holds more sauce than loose ground meat.
  • Portion control. Each bowl gets the same amount of meat.
  • Kid-friendly. Meatballs are easier to eat than loose stir-fry, especially for younger diners.

The flavor is identical to traditional pad kra pao - same garlic, chilies, basil, and sauce. The only change is the shape.

Tips for the Best Thai Basil Meatballs

Use 80/20 pork. Lean pork produces dry meatballs. The fat in 80/20 ground pork keeps them juicy and helps with browning.

Do not overmix. Combine the meatball ingredients until just mixed. Overworking the pork develops too much protein, making the meatballs tough and rubbery.

Get the pan hot. Medium-high heat is essential for a good sear. If the pan is too cool, the meatballs steam instead of browning.

Toast the garlic and chilies. The 30-second stir-fry of garlic and chilies in the rendered pork fat is where the pad kra pao flavor starts. Do not skip this step.

Add basil at the end. Thai basil wilts in seconds. Adding it too early turns it brown and bitter. Toss it in right before serving.

Fry the egg last. The egg should go from pan to bowl immediately. A runny yolk mixed into the rice and sauce is the best part of this dish.

Variations

Chicken. Substitute ground chicken thigh for pork. Chicken cooks slightly faster - check that meatballs reach 165F (74C).

Beef. Ground beef works but produces a denser meatball. Use 80/20 for best results.

Extra spicy. Add 2 more bird’s eye chilies or a teaspoon of Thai chili paste (nam prik pao) to the sauce.

Vegetable add-ins. Toss in long beans (cut into 1-inch pieces), bell peppers, or baby corn when you add the basil.

Low carb. Skip the panko and use 1 tbsp almond flour instead. The meatballs hold together fine without breadcrumbs.

Storage and Meal Prep

Cooked meatballs in sauce: Refrigerate in an airtight container for up to 4 days. Reheat in a skillet over medium heat until hot.

Uncooked meatballs: Shape and freeze on a parchment-lined tray until solid, then transfer to a freezer bag. Store up to 2 months. Thaw in the fridge overnight before cooking.

Meal prep bowls: Divide rice, meatballs, and sauce into 4 containers. Store fried eggs separately (or skip them). Reheat meatballs and rice, then fry a fresh egg when ready to eat.

FAQ

What is the difference between Thai basil and holy basil?

Thai basil (horapa) has purple stems, firm leaves, and an anise-like flavor. Holy basil (kra pao) has fuzzy stems, jagged leaves, and a peppery, clove-like taste. Holy basil is the authentic choice for pad kra pao, but Thai basil is more widely available and works well.

Can I use ground turkey or chicken?

Yes. Ground turkey or chicken thigh both work. Turkey is leaner, so add 1 tablespoon of oil to the meatball mixture to keep them moist. Chicken should reach 165F (74C) internally.

How spicy is this recipe?

With 3 bird’s eye chilies, it is medium-hot. With 5, it is authentically Thai spicy. Bird’s eye chilies are about 10 times hotter than jalapenos. Start with fewer and add more to taste.

What if I cannot find fish sauce?

Fish sauce is essential for the authentic flavor. It is available at Asian grocery stores, most supermarkets in the international aisle, or online. There is no good substitute - soy sauce alone misses the fermented umami depth.

Can I make this without a wok?

Yes. A large skillet works fine. The key is high heat and not overcrowding the pan when searing meatballs. A non-stick skillet makes cleanup easier.

Is this recipe gluten-free?

The meatballs use panko (contains wheat). Substitute gluten-free breadcrumbs or omit entirely - the pork holds together fine without a binder. Use gluten-free soy sauce and check that your oyster sauce is gluten-free.

Sources


Related recipes: Thai Pork Meatballs (Luk Chin), Korean Meatballs with Gochujang Glaze, Asian Pork Meatballs with Ginger & Soy