
Thai Basil Pork Meatballs
Juicy pan-fried pork meatballs scented with garlic, chilies and Thai basil, then tossed in a glossy, savory-sweet fish sauce glaze and finished with a handful of fresh basil. They have the flavor of pad kra pao in meatball form, and they're great over steamed jasmine rice.
- Prep
- 20 min
- Cook
- 18 min
- Wait
- 15 min
- Total
- 53 min
- Makes
- About 24 meatballs (4 servings)
Steps
Before you start
- Use ground pork with some fat (about 20%). Lean pork makes dry, crumbly meatballs.
- Start any jasmine rice you plan to serve while the meatball mixture chills, so it's ready when the meatballs are glazed.
- Thai chilies are very hot. Use 2 for mild-medium heat and wear gloves or wash your hands well after cutting them.
- Have a plate lined with paper towels, a thermometer and a small bowl of water (for wet hands) ready before you start shaping. This recipe is cooked entirely on the stovetop; no oven is needed.
Mix the glaze
- In a small bowl, stir together the oyster sauce, 1 tbsp fish sauce (fish_sauce_glaze), light soy sauce, sugar and water until the sugar is mostly dissolved.
- Set aside near the stove.
+ Show details− Hide details
Ready when: Sugar looks mostly dissolved and the liquid is uniformly brown.
Make the seasoned mixture
- In a large bowl, combine the minced garlic (3 cloves), shallot, minced chilies, chopped basil, 1 tbsp fish sauce, panko, beaten egg, cornstarch and white pepper.
- Stir to a loose paste.
- Add the cold ground pork and mix with your hands for about 1 minute, just until everything is evenly combined and the mixture looks slightly sticky.
+ Show details− Hide details
Ready when: No streaks of paste remain and the mixture holds together when squeezed.
Tip: Don't overmix. Working the pork longer than a minute makes the meatballs dense and rubbery.
Chill the mixture
- Cover the bowl and refrigerate for 15 minutes.
- This lets the panko absorb moisture and firms up the fat so the meatballs are easier to shape and hold their form in the pan.
+ Show details− Hide details
Ready when: Mixture feels cool and less sticky.
Tip: Start your rice now if serving with it.
Shape the meatballs
- Line a large tray or plate with parchment.
- Wet your hands lightly with water, then scoop about 2 level tablespoons (roughly 28 g) of mixture at a time and roll between your palms into smooth 1¼-inch (3 cm) balls.
- You should get about 24.
- Place them on the tray without touching.
+ Show details− Hide details
Ready when: Balls are smooth, uniform in size and hold together without cracks.
Tip: Re-wet your hands every few meatballs to prevent sticking.
Pan-fry in batches
- Heat 1 tbsp of the frying oil in a 12-inch (30 cm) nonstick skillet over medium heat until it shimmers.
- Add half the meatballs (about 12) with space between them.
- Cook 6–7 minutes, turning every 1–2 minutes with tongs, until browned on all sides and cooked through.
- Transfer to a plate.
- Wipe out any burnt bits, add the remaining 1 tbsp frying oil, and repeat with the second batch.
+ Show details− Hide details
Ready when: Meatballs are deep golden brown all over and read 160°F (71°C) in the center.
Tip: Let a crust form for about a minute before turning. If you move them too early they stick and tear.
Fry the aromatics
- Return the empty skillet to medium-high heat.
- Add the remaining 1 tbsp oil, then the sliced garlic and sliced chilies.
- Stir constantly for 20–30 seconds.
+ Show details− Hide details
Ready when: Garlic smells fragrant and is just pale golden at the edges.
Tip: Garlic burns fast and turns bitter. If it darkens quickly, pull the pan off the heat.
Glaze the meatballs
- Pour in the glaze mixture and bring to a boil, scraping up any browned bits.
- Add all the meatballs back to the skillet.
- Simmer, rolling the meatballs frequently, for 2–3 minutes.
+ Show details− Hide details
Ready when: Sauce reduces to a thick, syrupy glaze that coats the meatballs and leaves a trail when you drag a spatula through it.
Tip: If the sauce gets too thick or sticky, splash in 1–2 tbsp water.
Finish with basil and lime
- Remove the skillet from the heat.
- Add the whole basil leaves and lime juice, and toss for about 20 seconds just until the basil wilts.
- Serve right away over steamed jasmine rice, spooning the pan glaze on top.
+ Show details− Hide details
Ready when: Basil is bright green, softly wilted and fragrant.
Tip: Adding basil off the heat keeps its color and anise-like aroma. Cooking it longer turns it dark and dull.
Good to know
Tips
- Chilling the mixture is worth the 15 minutes: it makes shaping easier and the meatballs more tender and less likely to break.
- For even cooking, shape meatballs the same size. A 2-tablespoon cookie scoop helps.
- Taste the glaze before adding the meatballs. Add a squeeze of lime for brightness or a teaspoon of sugar if your fish sauce is very salty.
- Add a fried egg on top and a side of cucumber slices for a classic Thai rice-plate meal.
Make ahead
Mix and shape the meatballs up to 1 day ahead. Cover and refrigerate on the tray. You can also fry them (step 5) up to 2 days ahead and refrigerate. Make the glaze and finish with basil just before serving.
Storage & reheating
Room temperature: no more than 2 hours. Fridge: store glazed meatballs (without the fresh basil) in an airtight container up to 3 days. Freezer: freeze unglazed, cooked meatballs on a tray, then bag for up to 3 months. To reheat, warm in a skillet over medium-low heat with a splash of water, covered, for 5–8 minutes until steaming hot (165°F/74°C), then add fresh basil.
Substitutions
- Thai basil leaves → Holy basil, or regular Italian basil plus a pinch of mint. Holy basil is the most traditional for stir-fries. Italian basil is milder and less anise-like, so the flavor will be slightly different.
- ground pork → Ground chicken thigh or turkey thigh. Use dark meat for moisture. Cook to 165°F (74°C) and expect slightly paler meatballs.
- oyster sauce → Vegetarian mushroom stir-fry sauce. Use the same amount. This keeps the glaze savory and slightly sweet.
- Thai bird's eye chilies → Serrano or red jalapeño chilies. Milder heat. Use 1 chili per Thai chili called for, or more to taste.