
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.

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

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.

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.

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.

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.

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.

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

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.

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

Sweet and Sour Meatballs
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.
Notes
- 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
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.
Marie
Made this tonight, very good, takes some prep time but everything comes together quickly at the end. The recipe is flexible; I.e. I had beef and it worked out fine, and I increased the vegetables so I didn’t have to have a side dish (one full carrot in the meat), 1/2 half onion, one stalk of celery, one very large orange bell pepper, one large zucchini, and maybe 1/4 pound of mushrooms. Next time I make it, I will roast the meatballs in the oven so they can all be done at the same time and outside of turning them once, they are hands off, and I will reduce the sugar a little further. Served on jasmine rice. It is a keeper!
Pauline G.
This recipe is so easy to make but yet so delicious. Definitely going to make it again and again.
Pauline G.
This recipe was so delicious and easy to make. I actually made it with lamb because that’s what I had in my fridge and wow !!!! Love the sweet and sour sauce so much Maggie 🙂
Tina
I used ground beef instead green pepper instead (because that’s what I had). I omitted the wine because I didn’t have any. I added ground ginger to the meatballs. Also, I grated the onion, garlic and carrot in my meatballs. Turned out phenomenal!
Bob
I made this recipe tonight, pretty much as written. Very nice. Good combination of ingredients and good techniques. Thank you Maggie.
Galen Gentry
This is a great recipe. We tried it and it came out very well. We followed your instructions to a T but we added birdseye peppers because we like most things spicier than our friends. Everyone loved this! We have made several of your recipes: all were super yummy! (we also follow you on Instagram.) Thank you for posting
Marie
It was so easy to make and so good!
The whole family loved it 🥰 thank you
JH
This was so good, but it’s missing one important ingredient…pineapple. Every sweet and sour dish I’ve had growing up had pineapple in it. Happen to have some fresh-cut on hand and added it in just as the peppers and onions were done (just to warm it up). The husband agreed that it was great! We’ll definitely be making this again. I didn’t have siracha on hand and used sambal oelek instead.
Nick S
Fantastic recipe. Total do-again 🙂 This was fantastic. It was super fast to make. I used Spicy banana ketchup and that gave it a nice kick.
Suki
Oh wow! This recipe turned out amazing! I stumbled upon your blog a while back and have been religiously following it for all my weekend binges! I tried these this past weekend and it was delicious! I have never made meatballs in my life but these were so easy but also felt super healthy at the same time. Highly recommend this recipe.
Holly
Another amazing dish Maggie. Better than restaurant quality. I used 2 tbsp ketchup and one tbsp chili garlic sauce. We cannot wait to make this again soon!
Paola
Better than great! These were sublime. Already love your sweet and sour pork but actually love the texture mix and flavours. Brilliant and didn’t take long to prepare: another bonus
Julie
I made this for one of my six other dishes for CNY. It was the favorite hands-down. My family loved how tender the meatballs were and the sauce was described as being exceptional. The meatballs were made ahead of time and frozen and I doubled the recipe for the sauce.
Carolyn
Would ground beef work in this recipe?
Maggie
Yes it will work!
David Smith
EASY SWEET AND SOUR MEATBALLS (RECIPE): A: in the “Ingredients” it calls for 1/2 carrot (minced) … “STEP 2 “: Add the chicken, Shaoxing wine, soy sauce, sugar, white pepper, onion, CARROT, and garlic into a large bowl. B: “Fry” does not call for CARROT … “STEP 5” Turn the heat up to medium-high. Add the onion, CARROT, and pepper.
So…my question is: IS THE 1/2 CARROT TO BE DIVIDED UP ONTO 2 – 1/4 CARROT PIECES, OR IS THERE A CARROT AMOUNT NOT LISTED IN “FRY”? We made this recipe using the 1/2 carrot 9(minced) in the meatballs and only yellow onion and peppers called for in the “FRY” part of the recipe. Can you clarify this for me?
Maggie
Hi David, sorry for the confusion! I added some carrots to the frying process when testing the recipe, but decided to skip it for the final version to make the recipe shorter. But I forgot to edit the instructions. Just updated the recipe and now it’s correct.
PS. your approach was right – adding the minced carrot to the meatballs and only use onion and peppers in the sauce.
Mariya
Oh, I added cubed carrots with other veggies. it tastes super
David Smith
In your regards to this recipe: “Easy Sweet and Sour Meatballs”. I received this recipe in an email a couple of days ago. My wife and I both thought it looked good, like a recipe we would like to try. We saw in the recipe in the recipe heading “FRY”, it called for a bell pepper. (Bell Pepper to us is a green pepper). We also noticed in the recipe picture, there were red and yellow peppers, and apparently there was no green bell pepper used. Which brings me to the question; “Are we supposed to use red and yellow peppers or a green bell pepper”? Under the heading: ‘HOW TO MAKE SWEET AND SOUR MEATBALLS’ picture #3 and #4 both show red and yellow peppers with the onion and or meatballs. We would like clarification on this, as you know…there is a different taste to be considered between the different peppers. Thank you for your clarification when it is available…and thank you for your time>
Maggie
Hi David, sorry for the confusion! Yes I did use a mix of red and yellow peppers (half each) so I put 1 pepper in the recipe. I’m going to update the recipe now for clarity. Re your question, I do think red and/or yellow peppers will work better because they are sweeter and work very well with the sauce. That being said, it’s OK to use green as well.
Sabrina
very nice, thank you, love sweet and sour anything, meatballs too, and like that it’s easy!
Andrew
Loved it and super simple!!! Just one quick question, I make the mistake a lot I think, why does my sauce get so sticky and thick? It still tastes great but I want more sauce for tomorrow… really enjoyed the recipe!!! First time making meatballs of any cuisine too!!! Thank you
Maggie
Hi Andrew, I just realized that I had a typo and it should be “2 teaspoons cornstarch” instead of 2 tablespoons. So sorry for this!
I’m glad you still liked the dish. I hope you will cook this again and get a better result the next time.
Mimi Y Wan
Looks super delicious!