Thai Cuisine
Jok (Thai Rice Congee with Pork Meatballs)
A creamy, slow-simmered Thai rice porridge with seasoned pork meatballs, a soft egg, and bright ginger and white pepper toppings
Every morning across Thailand, street vendors wheel out enormous pots of jok before the sun has fully risen. The porridge has been simmering since the early hours, the rice grains long since dissolved into something thick and silky. Customers line up, point to their preferred toppings, and walk away with a styrofoam bowl of one of the most quietly satisfying meals in Thai cooking.
Jok (โจ๊ก, pronounced like "joke") is Thailand's version of the rice congee found throughout East and Southeast Asia. Where Chinese congee tends toward a clean, thin consistency, Thai jok is cooked longer and stirred more aggressively, producing a porridge so thick it coats a spoon. The rice grains break down almost completely, creating a texture closer to oatmeal than to soup. On its own it is mild, almost neutral, which is exactly the point. It becomes a canvas for the toppings: seasoned pork meatballs scented with garlic and white pepper, a trembling soft-boiled egg, sharp threads of raw ginger, and a generous shower of white pepper that blooms across the hot surface.
The technique is patient but not difficult. You rinse your rice, bring it to a boil, then let time and gentle heat do the work. Stirring matters, especially toward the end, to prevent sticking and to help the grains release their starch evenly. The meatballs, bound with a pounded paste of garlic, cilantro root, and white pepper, cook directly in the porridge or in a separate stock. The result is a meal that feels both nourishing and uncomplicated, the kind of food that makes sense at dawn or at midnight, when you are well or when you are not. If you enjoy this style of gentle, brothy comfort, khao tom offers a lighter Thai rice soup where the grains remain whole, while chao ga and chao long show how Vietnam approaches the same idea with chicken and pork offal respectively.
At a Glance
Yield
4 to 6 servings
Prep
30 minutes
Cook
1 hour 30 minutes
Total
2 hours
Difficulty
Easy
Ingredients
- 7 ozbroken jasmine rice (or regular jasmine rice, see Substitutions)
- 2½ qtwater
- ½ lbground pork
- 3 clovesgarlic, peeled
- 2cilantro roots (or 20 g cilantro stems, finely chopped)
- 1/2 tspwhite peppercorns (or 1 teaspoon ground white pepper)
- ½ fl ozthin soy sauce
- ¼ tbspfish sauce
- 2⅓ tspsugar
- 1small ice cube
- 3 cuppork stock or chicken stock
- ½ fl ozthin soy sauce, plus more for the table
- ¼ tbspfish sauce, plus more to taste
- —Pinch of salt, if needed
- 4to 6 eggs, at room temperature
- ⅓ cupfresh ginger, peeled and cut into fine julienne
- 2scallions, thinly sliced
- —Fresh cilantro leaves, roughly torn
- —Ground white pepper
- —Crispy fried garlic (optional)
- —Thin soy sauce, for the table
Method
- 1
Place the broken jasmine rice in a large pot and rinse it three or four times until the water runs mostly clear. Drain well, then add 2.4 litres of fresh water to the pot. Bring the water to a boil over high heat, stirring once or twice to prevent the rice from settling on the bottom.
- 2
Once the water reaches a rolling boil, reduce the heat to medium-low so the surface shows only a gentle, lazy bubble. Let the rice simmer, stirring every 10 to 15 minutes to keep it from sticking. As the rice cooks, the grains will swell, split, and begin to dissolve. The porridge will thicken gradually over the next 60 to 90 minutes.
- 3
While the rice simmers, prepare the pork meatballs. Using a mortar and pestle, pound the garlic, cilantro roots, and white peppercorns together into a smooth, fragrant paste. The smell should be sharp and peppery, with the garlic well broken down and no large pieces remaining.
- 4
Combine the paste with the ground pork, thin soy sauce, fish sauce, sugar, and the ice cube in a bowl. Mix firmly in one direction with your hand or a spoon until the mixture feels cohesive and slightly sticky, about 2 minutes. The ice cube keeps the meat cool during mixing, which helps it hold together when cooked. Cover and refrigerate until needed.
- 5
After about an hour of simmering, the rice should look thick, creamy, and porridge-like, with most grains broken down. The consistency should coat a spoon and fall slowly when lifted. If it thickens too much before the grains have fully dissolved, add more water in 240 ml increments and keep stirring. Set this rice base aside.
- 6
In a separate pot, bring the pork or chicken stock to a gentle boil over medium heat. Using wet hands, pinch off small pieces of the pork mixture and roll them into meatballs about 2 cm in diameter. Drop the meatballs into the simmering stock one at a time. They will sink at first, then float to the surface as they cook through, which takes about 4 to 5 minutes.
- 7
Once the meatballs are cooked and floating, add the rice base to the stock pot. Stir well to combine, breaking up any lumps. The porridge should be thick but pourable, somewhere between oatmeal and a creamy soup. If it feels too dense, stir in more stock or water until you reach a consistency you like.
- 8
Season the jok with the thin soy sauce and fish sauce. Taste carefully. It should be gently savory, not strongly salted, since each person will add more soy sauce at the table. Add a pinch of salt only if needed after tasting.
- 9
To make the soft-boiled eggs, bring a small pot of water to a full boil. Gently lower the eggs into the water, then immediately turn off the heat and cover the pot with a lid. Let the eggs sit for 6 minutes for a runny yolk, or up to 8 minutes for a jammy center. Transfer the eggs to a bowl of cold water and let them cool enough to handle, then peel carefully.
- 10
Ladle the hot jok into deep bowls, distributing the meatballs evenly. Halve a soft-boiled egg and nestle it into the porridge so the yolk is visible. Scatter ginger julienne, sliced scallions, and torn cilantro over the top. Finish with a generous pinch of ground white pepper and a drizzle of crispy fried garlic oil if you have it. Serve immediately with thin soy sauce on the table for each person to season to their liking.
Key Ingredient Benefits
Broken jasmine rice: These are jasmine rice grains that fracture during the milling process. They are sold separately and for a lower price than whole grains, which makes them ideal for porridge. The broken structure means they absorb water faster and release starch more readily, producing a creamier result in less time. Nutritionally, they are identical to whole jasmine rice grains.
Cilantro root: The root of the cilantro plant is used extensively in Thai cooking and carries a deeper, earthier flavor than the leaves or stems. It is pounded into pastes for soups, curries, and marinades. Thai and Southeast Asian grocers often sell cilantro with roots still attached. If unavailable, cilantro stems provide a reasonable approximation, though the flavor will be milder.
White pepper: Thai cooking uses white pepper far more than black pepper. It has a sharper, more pungent heat with less of the fruity complexity of black pepper. In jok, it appears twice: in the meatball paste and as a table condiment. White pepper contains piperine, which has been studied for its potential role in enhancing nutrient bioavailability, though practical dietary amounts are small.
Thin soy sauce: Thai thin soy sauce (si ew kao) is lighter and saltier than regular soy sauce, more akin to Japanese usukuchi. It seasons without darkening the dish, which matters in a white porridge. Kikkoman or any light soy sauce can substitute, though the flavor profile will shift slightly.
Ginger: Raw ginger julienne is the signature topping for jok. Its sharp, clean heat cuts through the mild richness of the porridge and provides textural contrast. The volatile compounds that create ginger's bite diminish with heat, which is why it is added raw at the table rather than cooked into the base.
Why This Works
Jok depends on the complete breakdown of rice starch, a process that requires time, water, and agitation. As the rice simmers, the starch granules absorb water, swell, and eventually burst, releasing amylose and amylopectin into the cooking liquid. This is what transforms plain water and rice into a thick, creamy porridge without any added thickener. Broken jasmine rice accelerates this process because the fractured grains expose more surface area to the water from the start.
Cooking the meatballs separately in stock rather than directly in the porridge keeps the rice base clean and allows you to control the seasoning of each component independently. The stock also picks up the savory flavor of the pork, which enriches the final dish when the two are combined. Some cooks add tapioca starch to their meatball mixture or to the porridge itself for extra body, but a well-simmered base from broken rice should not need it.
The garlic, cilantro root, and white pepper paste that seasons the meatballs is one of the fundamental flavor bases of Thai cooking. It appears in everything from grilled meats to stir-fries. Pounding these aromatics together rather than simply mincing them ruptures the cell walls more thoroughly, releasing oils and creating a cohesive paste that distributes evenly through the meat. The ice cube in the meatball mixture is a technique borrowed from Chinese and Thai dumpling-making. It keeps the proteins cool during mixing, which prevents them from binding too tightly and produces a more tender, less rubbery meatball.
Substitutions & Variations
Rice: If broken jasmine rice is unavailable, use regular jasmine rice and extend the cooking time by 20 to 30 minutes. You can also pulse dry rice briefly in a blender or food processor to crack the grains before cooking, or use leftover cooked jasmine rice blended with stock as a shortcut base, as some Thai cooks do for a quicker version.
Protein: Chicken is a common alternative. Season ground chicken with the same paste and form into meatballs, or shred leftover poached or roasted chicken and add it at the end. Prawns can be added in the last few minutes, and some Thai vendors offer sliced pork liver as a topping for those who enjoy offal. For a vegetarian version, omit the meatballs and top with silken tofu, sauteed mushrooms, and a drizzle of sesame oil, using vegetable stock as the base.
Meatball binder: Some recipes include a tablespoon of tapioca starch or cornstarch in the meatball mixture, which produces a slightly bouncier texture closer to Chinese-style pork balls. This is a matter of preference rather than necessity.
Oyster sauce: The Thai-Foodie approach uses oyster sauce in place of some soy sauce in the meatballs, which adds a subtle sweetness and deeper umami. Try replacing the thin soy sauce in the meatball mixture with 15 ml oyster sauce for a richer variation.
Century egg: A traditional addition in some shops. Quarter a century egg and place it alongside the soft-boiled egg for a contrasting flavor that is deeply savory and almost cheese-like.
Quick method: Combine 400 g cooked jasmine rice with 1.4 litres of stock in a blender and pulse to a coarse puree. Pour into a pot, bring to a simmer, and thicken with a slurry of 30 g tapioca starch dissolved in 120 ml water. This cuts the cooking time to under 30 minutes.
Serving Suggestions
Jok is traditionally eaten on its own as a complete meal, especially at breakfast, with all the toppings arranged on the table for each person to customize their bowl. Pa thong ko, the Thai-style deep-fried dough sticks, are the classic accompaniment for dipping and tearing. If you want to build a broader Thai breakfast spread, serve the jok alongside a crispy Thai omelette and a pot of strong Thai iced coffee or tea. For an evening meal, pair it with a more assertive dish like tom kha gai or a simple stir-fry to balance the porridge's gentleness with bolder flavors. For a tour of Asian rice porridges, serve jok alongside khao tom to compare the two Thai approaches, or explore gaeng liang for a lighter, broth-based Thai vegetable soup that shares the same restorative spirit.
Storage & Reheating
Refrigerator: Store the porridge base and meatballs together in an airtight container for up to 5 days. The jok will thicken considerably as it cools. Keep the toppings, especially the ginger julienne and scallions, stored separately so they stay fresh and crisp.
Reheating: Warm the jok gently over medium-low heat, stirring frequently and adding water or stock in small splashes until it returns to a pourable consistency. The porridge absorbs liquid as it sits, so you will almost certainly need to thin it out. Taste and adjust seasoning after reheating, as the flavors mellow overnight.
Freezing: The plain rice base freezes well for up to 2 months. Freeze in individual portions for quick weekday breakfasts. The meatballs can be frozen raw on a parchment-lined tray, then transferred to a bag once solid, and cooked directly from frozen in simmering stock. Soft-boiled eggs do not freeze well and should be made fresh.
Batch cooking note: Many Thai households keep a large pot of jok base in the fridge and reheat individual portions through the week, making fresh eggs and toppings each morning. This is perhaps the most practical approach if you want jok regularly without the long simmer each time.
Nutrition Facts
Calories: 306kcal (15%)|Total Carbohydrates: 31.3g (11%)|Protein: 15.7g (31%)|Total Fat: 12.5g (16%)|Saturated Fat: 4.5g (23%)|Cholesterol: 155mg (52%)|Sodium: 835mg (36%)|Dietary Fiber: 0.6g (2%)|Total Sugars: 2.5g
You Might Also Like
Ratings & Comments
Ratings & Comments
Ratings
Share your thoughts on this recipe.
Sign in to rate and comment

