Sunday, October 12, 2025

Cantonese Borscht 羅宋湯


If you’ve ever eaten at a Hong Kong café, you’ve probably come across Cantonese borscht 羅宋湯- that comforting bowl of tomato soup that always seems to proceed your main dish and best served alongside a cuppa' HK milk tea. It’s rich, tangy, and full of chunky vegetables- the kind of soup that instantly feels like home.

But wait… borscht? Isn’t that an Eastern European soup made with beets? You’re absolutely right! The original version is famous for its deep ruby color. But in Hong Kong, they’ve made it their own. Instead of beets, ripe tomatoes are cooked to create a bright, savoury broth that reflects the city’s East-meets-West story- a little nostalgic, a little global, and entirely delicious. This humble soup tells the story of Hong Kong’s unique cha chaan teng café culture- how local chefs took Western dishes and reimagined them through a Cantonese lens. 

It was a recent visit to a cha chaan teng with my second son for lunch and watching him devour this soup- that reminded me just how simple it is to make at home and why I haven't made it already. It’s cozy, nourishing, and absolutely perfect for fall weather 🍂🥣.


Cantonese Borscht 羅宋湯 (adapted from Made with Lau)
Serves 4 (double recipe for even better-tasting leftovers)

1 lb. stew beef chunks or spare ribs
2 Tbsp. oil
1-inch ginger, smashed and minced
3 cloves garlic, minced
1 red onion, cut into large dice
4 tomatoes, divided (3 tomates, quartered then halved, 1 tomato, diced)
2 potatoes, cut into bite-sized pieces
2 carrots, diced
1 to 2 chili peppers, diced or use 1/4 to 1/2 tsp. cayenne powder
3 stalks celery, diced
1/3 cup ketchup
1/4 tsp. ground black pepper
2 cups chicken broth
1 can (284 mL) condensed tomato soup
9 cups water
1 lb. green cabbage, cored and cut into bite sized pieces
1/2 lemon
2 bay leaves
1 tsp. salt
2 Tbsp. sugar


Add the meat to a skillet/wok or pot with 4 cups of water and bring it to a boil. Let it simmer for 30 seconds to release the scum; remove into a bowl with a slotted spoon, discard water and quickly clean the wok or pot.

Meanwhile, start to boil 10 cups water in a separate pot or kettle. Dry your skillet/wok if needed, then set the heat to low. Add oil, when warm add ginger and garlic. Stir-fry until fragrant. Add onions and stir-fry for 20 seconds. Add the smaller, diced tomatoes and cook for about 30 seconds. Add potatoes and carrots- stir fry for 30 seconds. Note: The natural moisture from the tomatoes keeps everything from burning, so don’t be afraid to turn up the heat to medium or high. The higher temperature helps cook off the excess liquid so your ingredients can stir-fry instead of steam. Add the rest of the tomatoes and chili peppers. Stir-fry for about 30 seconds, then add the celery. Mix in ketchup. 

I highly reco cooking with pork lard (high smoke point) for flavour


Add the parboiled beef/spare ribs. Season with black pepper and stir. 


Turn the heat off to safely transfer all the ingredients into a large soup pot.


Add chicken broth and can of tomato soup, then turn the heat on to high. Add the boiled water, then stir well. Add the cabbage, bay leaves, and lemon. Cover and bring everything to a boil. 

To deepen the tomato flavour, add a can of condensed tomato soup


Turn the heat down to medium-low and uncover the pot to stir. Cover, and let simmer for two hours. Season with salt and sugar. Taste and adjust the seasoning to your liking. Enjoy! 

Tip: The flavours will deepen and get richer after a day or two in the fridge, so always make more!

So hearty and nutritious as it's delicious!


Change up your weeknight dinner with this Cantonese Borscht- a simple, cozy recipe perfect for crisp fall days or whenever you’re craving a taste of Hong Kong comfort.

Full Recipe:

Cantonese Borscht 羅宋湯 (adapted from Made with Lau)
Serves 4 (double recipe for leftovers)

1 lb. stew beef chunks or spare ribs
2 Tbsp. oil
1-inch ginger, smashed and minced
3 cloves garlic, minced
1 red onion, cut into large dice
4 tomatoes, divided (3 tomates, quartered then halved, 1 tomato, diced)
2 potatoes, cut into bite-sized pieces
2 carrots, diced
1 to 2 chili peppers, diced or use 1/4 to 1/2 tsp. cayenne powder
3 stalks celery, diced
1/3 cup ketchup
1/4 tsp. ground black pepper
2 cups chicken broth
1 can (284 mL) condensed tomato soup
9 cups water
1 lb. green cabbage, cored and cut into bite sized pieces
1/2 lemon
2 bay leaves
1 tsp. salt
2 Tbsp. sugar

Add the meat to a skillet/wok or pot with 4 cups of water and bring it to a boil. Let it simmer for 30 seconds to release the scum; remove into a bowl with a slotted spoon, discard water and quickly clean the wok or pot.

Meanwhile, start to boil 10 cups water in a separate pot or kettle. Dry your skillet/wok if needed, then set the heat to low. Add oil, when warm add ginger and garlic. Stir-fry until fragrant. Add onions and stir-fry for 20 seconds. Add the smaller, diced tomatoes and cook for about 30 seconds. Add potatoes and carrots- stir fry for 30 seconds. Note: The natural moisture from the tomatoes keeps everything from burning, so don’t be afraid to turn up the heat to medium or high. The higher temperature helps cook off the excess liquid so your ingredients can stir-fry instead of steam. Add the rest of the tomatoes and chili peppers. Stir-fry for about 30 seconds, then add the celery. Mix in ketchup. Add the parboiled beef/spare ribs. Season with black pepper and stir. Turn the heat off to safely transfer all the ingredients into a large soup pot.

Add chicken broth and can of tomato soup, then turn the heat on to high. Add the boiled water, then stir well. Add the cabbage, bay leaves, and lemon. Cover and bring everything to a boil. Turn the heat down to medium-low and uncover the pot to stir. Cover, and let simmer for two hours. Season with salt and sugar. Taste and adjust the seasoning. 

Tip: The flavours will deepen and get richer after a day or two in the fridge.