These Russian-style meatballs, often called tefteli, combine ground meat and rice, then simmer gently in a tomato gravy finished with sour cream. Family versions vary, but this stovetop method makes tender, well-seasoned meatballs and a comforting sauce without complicated ingredients.
Ingredients
- 1 slice soft white sandwich bread, crusts removed, about 1 oz (30 g)
- ⅓ cup (80 ml) whole milk
- 1 lb (454 g) ground beef and pork, such as half of each
- ½ cup (90 g) cooked white rice, cooled
- 1 small yellow onion, finely grated, about ½ cup (70 g)
- 1 large egg, about 1¾ oz (50 g)
- 1 tsp (5 g) fine salt
- ½ tsp (1 g) ground black pepper
- 1 tbsp (15 ml) neutral cooking oil, plus a little more if needed
- 2 tbsp (28 g) unsalted butter
- 1 medium yellow onion, finely diced, about 1 cup (150 g)
- 1 medium carrot, peeled and coarsely grated, about ¾ cup (75 g)
- 2 tbsp (32 g) tomato paste
- 1 tbsp (8 g) all-purpose flour
- 1½ cups (360 ml) passata or finely crushed tomatoes
- 1½ cups (360 ml) low-sodium beef or chicken broth
- ½ tsp (1 g) sweet paprika
- 1 dried bay leaf
- ½ cup (120 g) full-fat sour cream, at room temperature
- 2 tbsp (6 g) chopped fresh dill, plus extra to serve
Instructions
- Soften the bread. Tear the bread into a small bowl, pour over the milk, and leave it to soak for 5 minutes. Mash it with a fork into a soft paste. This panade helps keep the meatballs moist; if the bread is very thick or still has dry pieces, mash in another teaspoon of milk.
- Mix the meatball mixture. Put the ground beef and pork in a large bowl. Add the cooled rice, grated small onion, egg, salt, pepper, and mashed bread. Mix gently with clean hands or a fork just until combined. Avoid squeezing or kneading the mixture for a long time, which can make the cooked meatballs dense.
- Shape the meatballs. With slightly damp hands, shape the mixture into 16 balls, each about 1½ inches (4 cm) across. Set them on a plate. If the mixture feels unusually sticky, chill it for 10 minutes while you prepare the sauce ingredients; otherwise, proceed without adding extra flour or breadcrumbs.
- Brown in batches. Heat the oil in a wide, heavy skillet or Dutch oven over medium heat. Add half the meatballs with space between them and brown for about 3–4 minutes, turning gently so several sides color. Transfer to a plate and repeat with the remaining meatballs, adding a small splash of oil if the pan is dry. They do not need to cook through at this stage.
- Build the tomato gravy. Reduce the heat to medium-low and melt the butter in the same pan. Add the diced onion and grated carrot; cook for 5–6 minutes, stirring, until softened but not deeply browned. Stir in the tomato paste and paprika for 1 minute. Sprinkle in the flour and stir for about 30 seconds so it coats the vegetables. Gradually pour in the passata and broth, scraping up the browned bits from the pan. Add the bay leaf and bring the sauce to a gentle simmer.
- Simmer until cooked through. Return the browned meatballs and any juices on the plate to the pan. Arrange them in one layer as much as possible, cover, and simmer gently for 18–20 minutes, turning the meatballs once if convenient. Keep the sauce at a calm bubble rather than a hard boil. Check the center of a large meatball with a food thermometer; ground meat must reach the USDA FSIS safe minimum internal temperature of 160°F (71°C). If needed, simmer for a few more minutes and check again.
- Finish the sauce. Turn off the heat and remove the bay leaf. Stir a few spoonfuls of hot sauce into the room-temperature sour cream, then stir that mixture back into the pan. This gradual warming helps prevent curdling. Fold in the dill, taste the gravy, and add a pinch more salt or pepper if needed. Serve hot with extra dill.
Tips
- Use cooked, cooled rice. Leftover rice works well, but break up clumps before measuring. Hot rice can warm the meat mixture and soften its texture. If you do not have cooked rice, cook a small amount separately and let it cool before mixing; uncooked rice is not a direct substitute here because it needs more liquid and simmering time.
- Keep the mixture tender. Combine the ingredients only until they hold together, and use a light touch when shaping. A mixture that is very wet can be chilled briefly; avoid correcting it with a large handful of flour, which can make the meatballs heavy.
- Brown without crowding. Work in batches and let the meatballs form a light crust before turning. They may stick if you try to move them too soon. Browning adds flavor, but the meatballs finish cooking in the sauce, so do not leave them in the skillet until fully cooked during this first step.
- Temper the sour cream. Use full-fat sour cream at room temperature and take the pan off the heat before adding it. Low-fat sour cream is more likely to split; plain full-fat yogurt can work in a pinch, but gives the gravy a tangier taste and should also be stirred in off the heat.
Serving Suggestions
Serve the meatballs with plenty of tomato gravy over mashed potatoes, boiled potatoes, or buttered egg noodles. Buckwheat groats make a fitting, earthy side, while plain rice is useful for catching the sauce if the meatballs themselves are served without rice-heavy sides. A spoonful of chopped dill on top brightens the rich gravy.
For a balanced plate, add a crisp cucumber salad, sliced tomatoes, or lightly dressed cabbage. Pickled vegetables also work well because their acidity contrasts with the creamy sauce. If you are serving a larger meal, put the meatballs in a warm shallow dish and spoon the gravy over them just before they reach the table so they stay moist.
Variations
Change the meat: A beef-and-pork blend gives a familiar, savory flavor. All ground beef works, though the result can be a little firmer; ground pork alone makes a softer, richer meatball. If using ground turkey or chicken, choose a mixture with some fat rather than the leanest option, and still cook it to 165°F (74°C) because poultry requires that higher safe minimum temperature.
Make the gravy without dairy: Leave out the sour cream and finish the sauce with a tablespoon of butter or a drizzle of olive oil. The result is more tomato-forward and less creamy. For a dairy-free version of the meatballs, replace the milk with unsweetened oat milk or water and use oil instead of butter; check that the bread is dairy-free.
Adjust the tomato flavor: Passata creates a smooth sauce, while crushed tomatoes give it a more rustic texture. If passata is hard to find, use canned crushed tomatoes in the same quantity. The sauce may be slightly thicker and more textured, so add broth a tablespoon at a time if it needs loosening.
Add gentle seasoning: A small pinch of dried marjoram or parsley can go into the meat mixture, and a little extra paprika can deepen the gravy. These are optional additions rather than requirements. Keep strong spices modest so they do not overwhelm the dill, tomato, and sour cream.
Storage and Reheating
Refrigerate cooked meatballs and gravy within 2 hours, in a covered container. They keep for 3–4 days in the refrigerator. The sauce may thicken as it chills, and the meatballs will absorb some of it, so add a splash of broth or water when reheating. For best texture, warm them gently in a covered saucepan over low heat, stirring the sauce carefully, until the center reaches 165°F (74°C). You can also microwave an individual portion in a covered, microwave-safe dish, stirring the sauce partway through and checking the temperature in a meatball.
To freeze, cool the dish promptly, portion it into airtight freezer containers, and freeze for up to 3 months for best quality. Thaw overnight in the refrigerator, then reheat to 165°F (74°C). Sour cream sauces can separate slightly after freezing; stir gently while reheating. Do not leave the dish at room temperature for extended storage.
Frequently Asked Questions
Are these Russian meatballs the same as kotlety?
They are related, but the terms often refer to different shapes and preparations. Kotlety are commonly formed as oval patties, while tefteli are round and often include rice and simmer in sauce. Names and family methods vary across Russia and neighboring cuisines, so you may see overlap between recipes.
Can I make the meatballs ahead?
Yes. Shape the raw meatballs, cover them, and refrigerate for up to 1 day before browning and simmering. Keep raw meat separate from ready-to-eat foods, and cook the meatballs to 160°F (71°C) in the center. You can also make the complete dish a day ahead and reheat it gently; the flavors settle in, though you may need a little broth to loosen the gravy.
Why did my meatballs turn out tough?
The most common causes are overmixing, compact shaping, or simmering the sauce too vigorously. Mix only until the ingredients come together, roll the balls lightly, and keep the pan at a gentle simmer. The soaked bread and cooked rice help create a tender texture, but they cannot compensate for heavily packed meat.
Can I use uncooked rice in the meatballs?
This recipe is written for cooked rice, which softens the mixture and cooks through during the short simmer. Uncooked rice needs substantially more liquid and a longer cooking time, so it may remain hard or draw too much moisture from the meatballs if substituted directly. Cook and cool the rice first for reliable results.
What can I use instead of sour cream?
Full-fat plain yogurt is the closest easy substitute, although it tastes tangier and may be more prone to splitting. Stir it into a little warm sauce first, then add it after the pan is off the heat. For a dairy-free or lighter tomato sauce, omit the sour cream rather than adding it during the simmer.
Related
- Traditional Russian Christmas Food: Kutia Recipe
- Russian Recipes for Dinner: Classic Beef Stroganoff
- South African Russian Sausage with Tomato Relish
More recipes to cook
Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes
Spotted an error? Tell us and we will correct it (corrections policy).