Go Back
+ servings
Print Recipe
4.95 from 39 votes

Sweet and Sour Pork (咕噜肉, Cantonese Style)

A traditional Chinese sweet and sour pork recipe (咕噜肉, Cantonese Style) made with crispy pork, pineapples, peppers & onions tossed in a sticky sweet and sour sauce
Prep Time35 mins
Cook Time25 mins
Total Time1 hr
Course: Main Course
Cuisine: Chinese
Servings: 4 Servings
Calories: 441kcal
Author: Joyce | Pups with Chopsticks


Fruits and Veggies

  • 1 cup pineapple (highly recommend using fresh pineapple, but canned pineapple works too)
  • 1 pepper (any color, cut into 1-inch cubes)
  • ½ white onion (cut into 1-inch cubes)

Pork Marinade

  • 1 lb pork shoulder (cut into 1-inch pieces)
  • 2 tablespoons soy sauce
  • 1 small onion (grated, approximately ¼ cup)
  • 4-5 slices ginger (grated, approximately 2 tablespoons)
  • 3 cloves garlic (grated, approximately 1½ tablespoons)


Sweet & Sour Sauce

Corn Starch Slurry (To Thicken Sauce)



  • Cut the onions and peppers in 1-inch chunks and set aside
  • If you are using fresh pineapple, core and peel it and then cut them into 1-inch chunks and set aside. If you are using canned pineapple, drain it and cut them into 1-inch chunks if you are using pineapple rings. Put them in a bowl and set aside.

Marinating the Pork

  • Cut the pork into 1-inch chunks and place it in a bowl.
  • Grate the ginger, garlic, and onion and put it all in the bowl with the pork.
    Alternatively, you can also chop the ginger, garlic, and onion into small pieces and blitz them in a food processor. You may also need to add the soy sauce into the food processor with the ginger, garlic, and onions to help it blend more smoothly into a paste. Add the blended aromatics into the bowl with the pork.
  • Add soy sauce to the bowl and mix everything very well.
  • Let it marinate for 1 hour.

Battering & Deep Frying the Pork

  • Once the meat has finished marinating, in the bowl or plate - separate the meat slightly so they are not clumped together.
  • Add half the potato starch over the meat and gently toss it until each piece has been coated with potato starch.
    Let it rest for 5 minutes until the potato starch has absorbed the marinade and moisture, and the batter looks gummy and moist.
  • Add the rest of the potato starch on a large plate and dip each piece of pork into the potato starch one by one until each piece is well coated.
  • If you are using a deep fryer, set the temperature to 350F (180C) and wait for the oil to get to temp.
    If you are using a frying pan or shallow pot, set the heat to medium heat and make sure there is at least 1 inch of oil in the pan. To test if the oil is hot enough in a pot, use a wooden chopstick or the back of a wooden spoon and dunk it in the oil. If it starts to bubble, the oil is hot enough to start deep frying.
  • Add the meat in when the oil is hot, careful not to overcrowd the pan. (Depending on how big your pan is, you may need to do it in 2 batches). Cook the meat for approximately 5 minutes until it is crispy and browned.
  • (Optional - Double Frying for Crispier pork.) If you want very crispy pork, once the meat has finished deep frying, remove it from the oil for about 1 minute, and then re-fry it again for about 30 seconds to 1 minute.
  • Remove the crispy pork and let it drain on a rack or a plate with something absorbent like newspaper or paper bag and set aside.

Putting It Together

  • In a clean frying pan, add in 2-3 tablespoons of oil, and set the stove to medium heat.
  • Add in the tomato paste when the oil is hot and toast the tomato paste for 1-2 minutes until the oil has turned orange
  • Add in the white vinegar, water, sugar and soy sauce and mix well and let it cook for 5 minutes.
  • In a small bowl, dissolve the corn starch in cold water. Slowly pour it into the sauce but make sure you are constantly stirring it so it doesn't clump.
  • Once the sauce has thickened, add in the peppers, pineapples, and onions and cook it for 1-2 minutes. Use your spatula to separate the onion chunks into smaller pieces.
  • Add in the crispy pork and coat each piece with the sweet and sour sauce once the meat has all been coated, turn off the heat.
    Try not to cook the crispy pork in the sauce for too long, this will make the batter soggy. You just want to quickly coat the crispy pork with the hot sweet and sour sauce for no more than 30 seconds to 1 minute and then plate it.
  • Plate it and serve with rice! Enjoy! :)


  • To get the crispiest pork, try to use potato starch. If you can't find it, you can substitute it with corn starch and it will turn out just as delicious.
  • If you are using potato starch to deep fry the meat, make sure to not overcrowd the pan. Gently put the meat in one at a time, and make sure they are not touching each other. When heated, potato starch will start off gummy before it hardens to a crispy shell, so if you have the meat initially touching each other, it may form a giant ball of meat and rip the batter off the pork when you move it around. Once the batter hardens and gets a little crispy, you can move it around freely. This is especially important if you are using a deep fryer because you're working with a smaller deep frying area. I use a small deep fryer at home and have to fry the pork in 2 batches. 
  • To keep everything crispy, it's important that you don't cook the crispy pork for too long in the sauce - which will make the batter soggy. You want to quickly coat the meat with the sauce at the very end for less than 1 minute.


Serving: 1Serving | Calories: 441kcal | Carbohydrates: 75g | Protein: 8g | Fat: 13g | Cholesterol: 74mg | Sodium: 1002mg | Fiber: 3g | Sugar: 32g