Meatballs with sweet and sour glaze over rice

Sweet and sour meatballs are a Chinese American takeout classic that pairs tender, pan browned meatballs with a glossy sauce built on ketchup, rice vinegar, and brown sugar. My version uses ground chicken instead of pork, keeps the sugar lower than most restaurant versions, and sneaks minced carrots and onion right into the meatball mixture so even picky eaters get their vegetables.

I created this recipe because I like to make them when I host my friends who has young kids and this one is always a hit. Hiding minced carrot and onion directly in the meat mixture makes the meal balanced and any picky eaters would eat them, and the sweet and sour sauce is so good with rice to scoop up every last drop.

Most of the time I make a double batch because the leftovers reheat so well for lunch the next day. If you are looking for a weeknight meal that is quick (only 30 minutes), satisfying, and sneaks in extra nutrition, I hope you give these sweet and sour meatballs a try at home.

Meatballs with sweet and sour glaze

Ingredients

I organize the ingredients into 3 groups: the meatball mixture, the vegetables for the pan, and the sweet and sour sauce.

Sweet and Sour Meatballs ingredients

For the meatballs

I use ground chicken as the base, mixed with Shaoxing wine, soy sauce, white pepper, and a touch of brown sugar for seasoning. Minced onion, carrot, and garlic go straight into the mixture along with an egg and panko breadcrumbs, which keep everything soft and tender.

Pan vegetables

Chopped yellow onion and bell pepper add color and crunch to the finished dish. I like using a mix of red and yellow peppers, but either one works.

Sauce

  • Base: Ketchup gives the sauce its signature sweet and sour foundation. I use about 3 parts ketchup to balance the vinegar and sugar.
  • Vinegar: I use rice vinegar to provide the sour element without being too sharp.
  • Sweetener: Brown sugar adds depth to the sauce beyond what ketchup alone can do.
  • Seasoning: Soy sauce and Shaoxing wine bring the savory backbone. I add a clove of grated garlic for extra flavor.
  • Thickener: I use cornstarch mixed into the sauce ingredients.
  • Heat (optional): Sriracha or chili garlic sauce blended into the ketchup is optional. If you have kids at the table, keep some sauce plain and add the heat to your own portion.

How to Make

1. Mix the meatballs: Combine ground chicken, Shaoxing wine, soy sauce, sugar, white pepper, minced onion, carrot, and garlic in a large bowl. Beat with a spatula until the mixture turns sticky, about 5 minutes, then fold in the egg and breadcrumbs.

Combine meatball ingredients in a bowl

2. Shape: Coat your hands with a thin layer of oil and roll heaping tablespoons of the mixture into round balls. Place them on a plate or tray. This recipe makes about 24 meatballs.

prepping the Meatballs

3. Brown the meatballs: Heat vegetable oil in a large skillet over medium heat. Add the meatballs without crowding the pan and brown on all sides, about 6 to 8 minutes total. The internal temperature should reach 165°F (74°C). Transfer to a plate.

Brown the meatballs in a skillet

4. Cook the vegetables: Turn the heat to medium high. Add chopped onion and bell pepper and stir fry until the onion edges turn slightly golden, about 1 to 2 minutes.

Cook the vegetables

5. Add the sauce: Stir the sauce mixture one more time to dissolve the cornstarch, then pour it into the pan. Stir constantly and bring to a boil until the sauce thickens.

Add the sauce to veggies and meatballs

6. Combine and serve: Return the meatballs to the pan, toss to coat, and transfer everything to a serving plate.

combine meatballs, sauce and vegetables in a skillet

Key cooking tips to consider

Beat the meat mixture until sticky: This is what gives the meatballs their tender, cohesive texture. If you skip this step, they tend to crumble apart in the pan. I learned this from making Chinese pork meatballs growing up, where the beating step is non negotiable.

Oil your hands before shaping: A thin coat of vegetable oil prevents the mixture from sticking to your palms and makes shaping faster.

Do not crowd the pan: If the meatballs touch each other while browning, they steam instead of developing a crust. Work in batches if needed.

Stir the sauce right before pouring: Cornstarch settles to the bottom fast. One quick stir ensures even thickening so you do not end up with lumps.

Control the sugar: This recipe already uses less sugar than most sweet and sour sauces. Taste the sauce before adding the meatballs back and adjust the brown sugar or vinegar to your preference.

Check the internal temperature: Ground chicken should reach 165°F (74°C) to be safe. I use an instant read thermometer to check the largest meatball before serving.

Sweet and Sour Meatballs over white rice

How I love serving

I serve these meatballs straight over steamed white rice so the sauce pools into the grains. On nights when I want a bigger spread, I add a simple stir fried bok choy and a bowl of egg drop soup on the side. For appetizer portions, plan on 2 to 3 meatballs per person with toothpicks. For a main course, 4 to 5 per serving with rice is plenty.

For a crowd, I double the recipe and place the meatballs in one big dish. You can swap the chicken for ground pork or turkey depending on what you have. If you want a fruity twist, toss in a cup of pineapple chunks during the last minute of cooking, which adds sweetness and a little acid. A drizzle of my homemade chili oil or a side of Chinese cucumber salad are highly recommended as well.

Frequently ask questions

Why do the meatballs need to be beaten for 5 minutes?

Beating the mixture activates the proteins in the chicken, which creates a sticky, cohesive texture that holds together without falling apart in the pan. If you just stir everything loosely, the meatballs tend to crumble when you brown them. This technique comes straight from Chinese cooking, where hand beaten meatballs and lion head meatballs rely on the same method for that signature bounce.

Can I freeze the meatballs with the sauce?

I freeze them two ways. For raw meatballs, I shape them, place them on a parchment lined tray, freeze until solid, then transfer to a zip top bag for up to 2 months. For the full dish with sauce, let everything cool completely, transfer to a freezer safe container, and freeze for up to 3 months. Reheat on the stovetop over medium heat with a splash of water until the sauce is bubbling and the meatballs are heated through.

Can I make these in a slow cooker?

You can. Brown the meatballs first in a skillet, then transfer them to a slow cooker with the sauce and vegetables. Cook on low for 2 hours, then switch to high for 1 hour to thicken the sauce. The texture will be softer than the stovetop version since the meatballs braise in the sauce, but the flavor is just as good and it is a great option when you want dinner ready without standing at the stove.

Chinese Cooking Made Easy

Are you new to this website? This free email series is a great place to start. I’ll walk you through a few of my most popular recipes and show you how and why they work. You’ll quickly start to cook better Chinese food in your own kitchen.

Watch video

Meatballs with sweet and sour glaze over rice

Sweet and Sour Meatballs

5 from 10 votes
Prep Time: 15 minutes
Cook Time: 10 minutes
Total Time: 25 minutes
Servings: 4 servings (20 meatballs)
These sweet and sour meatballs are one of my favorite weeknight recipes. I make them with ground chicken, panko breadcrumbs, and hidden vegetables, then toss everything in a sticky, tangy sauce that is ready in less than 30 minutes.

Ingredients 

  • 1 lb ground chicken
  • 2 tablespoons Shaoxing wine (or dry sherry)
  • 2 teaspoons soy sauce
  • 1/2 teaspoon brown sugar
  • 1/4 teaspoon white pepper
  • 1/4 yellow onion , minced
  • 1/2 carrot , minced
  • 2 garlic , minced
  • 1 egg
  • 1 cup panko breadcrumbs

Fry:

  • 1 tablespoon vegetable oil
  • 1/4 yellow onion , chopped
  • 1 red or yellow pepper , chopped (I used half red and half yellow pepper but you can use either)

Sauce:

  • 3 tablespoons ketchup , or sriracha, and/or chili garlic sauce (*Footnote 1)
  • 3 tablespoons rice vinegar
  • 2 tablespoons Shaoxing wine (or dry sherry)
  • 2 tablespoons soy sauce
  • 3 tablespoons brown sugar
  • 4 tablespoons water
  • 1 clove garlic , grated
  • 2 teaspoons cornstarch

Instructions

  • Combine the sauce ingredients in a medium-sized bowl. Stir to mix well and set aside.
  • Add the chicken, Shaoxing wine, soy sauce, sugar, white pepper, onion, carrot, and garlic into a large bowl. Beat everything together with a spatula until it becomes sticky, about 5 minutes. Add the egg and breadcrumbs and stir to incorporate.
  • Coat your hands with a light layer of oil (it helps you to form the meatballs without sticking too much to your hands). Add one heaping tablespoon of the mixture into your palm and shape it into a round ball. Place it onto a large flat plate or tray. Repeat to shape the rest of the meatballs.
  • Heat the vegetable oil in a large skillet over medium heat until hot. Add the meatballs into the pan without overcrowding them. Let the meatballs brown for 1 to 2 minute, then flip and brown the other side for another 1 to 2 minutes. Once both sides are browned, flip the meatballs on their sides and brown for another 4 to 5 minutes. Roll them occasionally to brown all sides evenly. Once done, remove the meatballs onto a large plate and set aside.
  • Turn the heat up to medium-high. Add the onion and pepper. Stir fry until the onion turns slightly pale golden on the edges, 1 to 2 minutes.
  • Stir the sauce again to thoroughly dissolve the cornstarch and pour it into the pan. Stirring constantly to bring the sauce to a boil and cook until it is thickened.
  • Return the meatballs to the pan, toss to coat, and transfer everything to a serving plate.

Ingredient Substitution Guide

Notes

  1. Depending on your personal preference, you can use ketchup, hot sauce, or a combination of both. Personally I like to use 2 tablespoons ketchup and 1 tablespoon sriracha. It gives the sauce more character and it doesn’t taste very spicy.

Nutrition

Serving: 1serving, Calories: 414kcal, Carbohydrates: 42.4g, Protein: 26.2g, Fat: 15.2g, Saturated Fat: 3.9g, Cholesterol: 138mg, Sodium: 1162mg, Potassium: 832mg, Fiber: 2.3g, Sugar: 14.5g, Calcium: 82mg, Iron: 3mg

Did you make this recipe?

I’d love to hear how it turned out for you! Please take a moment to leave a 5-star rating ⭐️ and share your thoughts in the comments further down the page. It really helps others discover the recipe too.