I’ve been on a serious meatball kick lately, and somewhere in the middle of it, I realized that meatballs might just be one of the best things ever invented to eat. Now, my undying love for meatballs is what pushed me to develop my Vietnamese lemongrass pork chop meatballs, and the second I finished that batch, my brain went straight to the obvious question. What else can I turn into a meatball? The answer landed so fast. Bo luc lac. Shaking beef. One of the most crave-worthy dishes in the entire Vietnamese repertoire, and a flavor profile that’s just begging to be turned into a juicy little meatball.

So I rolled up my sleeves and got to work. I took everything that makes classic bo luc lac so amazing, the onions and bell peppers, the oyster sauce, the soy, that perfect sweet and savory balance, and I packed it all into a tender, flavorful meatball inside and out. Then I glazed those meatballs in a traditional bo luc lac sauce that hits exactly the same notes as the original. The result tastes like the dish you order at your favorite Vietnamese spot, except now it comes in a fun-to-eat form!

Why You’ll Love These Bo Luc Lac Meatballs
- All the bo luc lac flavor, brand new shape. You get that signature garlicky, savory-sweet punch in every single bite, no expensive steak required.
- Outrageously juicy. Banh mi breadcrumbs, an egg, and a splash of oil keep the inside tender while a hard sear builds a caramelized crust.
- Fast enough for a weeknight. Start to finish, these come together in about forty minutes. Even better to make ahead of time to keep in the freezer to reheat for those even busier days.

What Is Bo Luc Lac?
If shaking beef is a new concept to you, don’t worry, you’re in a safe space. Bo luc lac is a beloved Vietnamese dish of marbled beef, traditionally cut into cubes, seared hot and fast, and tossed in a savory sauce made with oyster sauce, soy sauce, garlic, and a little sugar. Cooks serve it over a bed of salad or a bowl of tomato rice alongside cucumber, tomato, and a bright lime, salt, and pepper dip. It tastes rich, balanced, and a little bit special every single time. This is one of my favorite dishes, and it’s easy to make, but I can’t always afford a nice filet mignon or ribeye to make it, so this is the perfect way to have all those incredible flavors at a fraction of the price.

Why Do They Call It Shaking Beef?
The name tells you how to cook it. “Luc lac” refers to the shaking motion a cook uses to toss the beef around a screaming-hot wok, searing every side quickly so the meat stays juicy. You literally shake the pan. I kept that idea alive in this recipe by tossing the finished meatballs in their glaze the same way, so they pick up a glossy, sticky coat without overcooking.

How to Make Bo Luc Lac Meatballs
Prep your ingredients. Finely dice the onion and red bell pepper. Keep the pieces small so the meatballs hold their shape and cook evenly. Mince your garlic if it is not already minced. Turn day-old banh mi into breadcrumbs by tossing it into a food processor and pulsing until fine. If you don’t have this, a store-bought breadcrumb will work fine.

Mix the meatballs. Add the ground beef, onion, bell pepper, garlic, oyster sauce, soy sauce, sugar, MSG, black pepper, banh mi breadcrumbs, egg, and 1 tablespoon oil to a large bowl. Mix with clean hands until everything just comes together. Stop the moment it looks combined. Overmixing turns meatballs dense, so go easy. Then let the mixture vibe out in the fridge for fifteen minutes. This firms it up and makes rolling so much easier. Skip it if you are in a hurry.

Roll it into meatballs. Make sure you have plenty of oil on your hands to prevent the mixture from sticking. Shape the mixture into balls slightly larger than a golf ball, roughly 2 inches across. This recipe should make 18-20 meatballs. A cookie scoop keeps them even, which helps them cook at the same rate.

Sear the meatballs. Heat 2 tablespoons of oil in a large skillet over medium-high heat. Add the meatballs in a single layer, working in batches, so you never crowd the pan. Sear, turning, until every side browns. That crust is extra flavor, so let them go undisturbed for a minute at a time before you roll them.

Steam to finish. Once the meatballs are browned all over, pour in 1/4 cup water, cover the pan, and lower the heat. Let them steam until cooked through, about five to seven minutes. They should reach 160F in the center. The water keeps the inside moist while the heat finishes the job.

Make the sauce and shake it. While the meatballs steam, whisk the oyster sauce, soy sauce, sugar, water, garlic powder, and black pepper in a small bowl until the sugar dissolves. Uncover the pan and let any leftover water cook off. Pour the sauce right over the meatballs and shake and toss the pan until each one wears a glossy, sticky coat. This is your shaking beef moment, so really lean into it.

Serve. Pile the meatballs over hot white rice and spoon the sauce over them too. Tuck slices of cucumber and tomato alongside, and finish with a generous sprinkle of fried garlic. Enjoy!
My Tips for the Juiciest Meatballs
- Use 80/20 beef. Lean beef gives you dry, sad meatballs. Embrace the fat.
- Do not overmix. Mix until just combined and stop. Your texture depends on it.
- Chill before rolling. Cold meat shapes cleaner and sears better.
- Sear, then steam. The two-stage approach gives you a caramelized crust and a tender, fully cooked middle at the same time.
- Keep the pan uncrowded. Crowded meatballs steam instead of sear, and you lose that crust.
Storage and Reheating
- Fridge: Keep cooked meatballs in an airtight container for up to four days. Reheat gently so they stay juicy.
- Freezer: Freeze cooked meatballs for up to three months. (Don’t glaze in the sauce until it’s ready to serve). Thaw overnight in the fridge, then warm through. You can also freeze them raw and rolled, then cook straight from frozen with a few extra minutes of steaming.
Frequently Asked Questions
What does bo luc lac mean?
Bo luc lac translates roughly to “shaking beef.” “Bo” means beef, and “luc lac” refers to the shaking motion used to toss the meat around a hot pan. These meatballs borrow that same technique when you shake them in the glaze.
Can I bake these meatballs instead of searing them?
You can. Arrange the rolled meatballs on a lined sheet pan and bake at 400F for about 18 to 20 minutes, until browned and cooked through to 160F. Then toss the baked meatballs in the warm bo luc lac sauce so they still pick up that glossy glaze. You trade a little of the stovetop crust for a hands-off batch.
What can I use instead of banh mi breadcrumbs?
Panko works in a pinch and still gives you a tender crumb. Banh mi crumbs stay my favorite because that airy bread melts into the beef and keeps the texture especially light, so use them if you can get your hands on a roll.
Do I really need the MSG?
I stand by it. MSG deepens the savory flavor and makes the whole dish taste more like the bo luc lac you love. If you would rather leave it out, add a small extra splash of soy sauce to make up some of that savory depth, though the meatballs taste fullest with it in.
What kind of beef should I use?
An 80/20 ground beef gives you the best balance of flavor and juiciness. That fat content keeps the meatballs moist and helps them brown into a proper crust.
Can I make these ahead of time?
Absolutely. Mix and roll the meatballs up to a day in advance and keep them covered in the fridge, or cook the full batch and reheat when you are ready to eat. The flavor will get better as it sits.

