American · Main course

Porcupine Meatballs

Porcupine meatballs are a beloved American retro classic: ground beef meatballs studded with uncooked white rice, braised low and slow in a tangy-sweet tomato sauce until the grains swell and poke out like little quills. Because the rice cooks inside the meat, it drinks up beefy tomato flavor and keeps each meatball plump and tender rather than dense. A quick sear builds a savory base, then a gentle covered simmer does the rest in one pot.

Porcupine Meatballs · American main course
By Mira Chen · Senior recipe editor · Published 2026-07-02 · Updated 2026-07-02
Jump to recipe →
Prep
20 min
Cook
60 min
Total
85 min
Yields
About 20 meatballs (serves 4)
Difficulty
Easy
#american#main-course#comfort-food#ground-beef#one-pot#retro-classic
Quick answer · A 30-second answer

Gently mix 450 g (1 lb) of 85% lean ground beef with 100 g (1/2 cup) uncooked long-grain white rice, a grated small onion, 1 beaten egg, 2 minced garlic cloves, salt, pepper, and paprika, then roll into 20 walnut-sized meatballs. Brown them in batches in an oiled Dutch oven, pour off excess fat, and stir in two 15-oz cans of tomato sauce, 1 cup low-sodium beef broth, 1 tbsp each Worcestershire sauce and brown sugar, plus 1 tsp Italian seasoning. Nestle the meatballs back in, cover, and simmer on low for about 40 minutes, turning once halfway, until the rice is tender and the centers reach 71°C (160°F). Uncover and simmer 5-10 minutes more to thicken the sauce, rest 5 minutes, and serve.

  • Use uncooked long-grain white rice — brown rice will not soften in the simmering time, and pre-cooked rice turns mushy.
  • Keep the simmer barely bubbling with the lid on; the trapped steam is what cooks the rice inside the meatballs.
  • Grate the onion instead of dicing it — the juice keeps the meatballs moist and helps them hold together without overmixing.

Equipment

  • Large mixing bowl
  • Box grater
  • Deep 30 cm (12-inch) skillet or Dutch oven with a tight lid
  • Measuring cups and spoons
  • Tongs or a slotted spoon
  • Instant-read thermometer (optional)

Ingredients

Meatballs

  • 450 g ground beef (85% lean)
  • 100 g uncooked long-grain white rice, rinsed and well drained
  • 80 g yellow onion, grated, grate on the large holes of a box grater, juices included
  • large egg, lightly beaten
  • garlic cloves, finely grated or minced
  • 4 g fine sea salt
  • 1 g freshly ground black pepper
  • 2 g sweet or smoked paprika

Tomato sauce

  • 15 ml olive oil, for browning
  • 850 g canned tomato sauce, smooth tomato sauce or passata, not chunky marinara
  • 240 ml low-sodium beef broth, or water
  • 15 ml Worcestershire sauce, contains anchovies; see variations for a fish-free swap
  • 12 g brown sugar, balances the acidity of the tomatoes
  • 2 g dried Italian seasoning
  • 8 g chopped fresh parsley, for serving, optional

Method

  1. STEP
    01

    Grate the onion on the large holes of a box grater, keeping every drop of juice. In a large bowl, combine the ground beef, rinsed rice, grated onion, egg, garlic, salt, pepper, and paprika. Mix with your fingertips just until the rice and seasonings are evenly distributed — overworking the meat makes tough meatballs.

  2. STEP
    02

    With lightly dampened hands, roll the mixture into about 20 meatballs, each roughly 4 cm (1 1/2 inches) across — a slightly heaped tablespoon each. Set them on a tray as you go. Keep them on the smaller side; the rice will swell and expand each meatball as it cooks.

  3. STEP
    03

    Heat the olive oil in a deep skillet or Dutch oven over medium-high heat until shimmering. Brown the meatballs in two batches, about 2 minutes per side, turning once — they should be deeply colored in spots but still raw inside. Transfer to a plate. Browning builds a savory fond that flavors the whole sauce.

  4. STEP
    04

    Pour off all but a thin film of fat from the pot. Over medium heat, stir in the tomato sauce, broth, Worcestershire sauce, brown sugar, and Italian seasoning, scraping up the browned bits from the bottom. Bring the sauce just to a simmer.

  5. STEP
    05

    Return the meatballs and any juices to the pot and spoon sauce over each one so they are mostly submerged. Cover with a tight lid, reduce the heat to low, and keep the sauce at a bare simmer for 40 minutes, gently turning the meatballs once at the halfway mark. Resist lifting the lid otherwise — the steam is cooking the rice.

  6. STEP
    06

    Cut one meatball in half: the rice should be fully tender and the center no longer pink, 71°C (160°F) on an instant-read thermometer. If the rice still has bite, add a splash of broth, re-cover, and simmer 10 minutes more. Once done, simmer uncovered for 5-10 minutes to thicken the sauce to a spoon-coating consistency.

  7. STEP
    07

    Take the pot off the heat and let it stand, uncovered, for 5 minutes — the sauce will settle and cling better, and the meatballs firm up slightly. Scatter with chopped parsley and serve straight from the pot with plenty of sauce spooned over.

Make ahead

Shape the raw meatballs up to 24 hours ahead and keep them covered on a tray in the fridge, or freeze them raw on the tray and bag them for up to 3 months (brown from frozen and add 10-15 minutes to the covered simmer). The fully cooked dish actually improves overnight as the sauce flavors the rice — make it a day ahead and reheat gently with a little extra broth.

Storage

Refrigerate leftovers in an airtight container for up to 4 days; the rice keeps absorbing sauce as it sits, so stir in a splash of broth or water when reheating. Rewarm gently in a covered saucepan over low heat, or microwave at medium power in 60-second bursts. Cooked meatballs in sauce freeze well for up to 3 months — thaw overnight in the fridge before reheating.

Variations

Oven-baked casserole

Skip the stovetop browning: arrange the raw meatballs in a single layer in a 23x33 cm (9x13-inch) baking dish, whisk the sauce ingredients together, and pour the sauce over. Cover tightly with foil and bake at 190°C (375°F) for 45 minutes, then uncover and bake 10-15 minutes more until the sauce is bubbling and the rice is tender.

Turkey and herb

Swap the beef for 450 g (1 lb) of 93% lean ground turkey and add 1 tbsp chopped fresh parsley and 1/2 tsp dried thyme to the mix. Turkey is leaner, so brown the meatballs in an extra 1 tbsp of oil and handle them gently — they are softer before the rice sets.

Gluten- and fish-free

The recipe contains no other gluten, so simply use a certified gluten-free, anchovy-free Worcestershire, or replace it with 2 tsp coconut aminos plus 1/4 tsp apple cider vinegar. This also removes the fish allergen while keeping the sauce's savory depth.

Serve with

Buttery mashed potatoes to catch the extra tomato sauceSteamed green beans with lemon and a pinch of flaky saltWarm crusty bread or garlic bread for mopping the potA crisp green salad with a sharp red wine vinaigretteButtered peas and carrots for a full retro dinner plate

Nutrition per serving

495 kcal 22 g fat 35 g carbs 27 g protein 11 g sugar 3 g fiber 1050 mg sodium
Allergens: Egg, Fish

Nutrition values are estimates based on the metric measurements. Adjust as needed.

Frequently asked

Why are they called porcupine meatballs?

As the meatballs braise, the grains of rice swell and poke out of the surface like a porcupine's quills — hence the name. The dish became popular in American kitchens during the Depression era, when rice was an inexpensive way to stretch a pound of ground beef into a full family dinner.

Do I need to cook the rice before mixing it into the meatballs?

No — the whole point of porcupine meatballs is that raw long-grain white rice goes straight into the meat and cooks in the sauce. It needs a full 40 minutes at a gentle, covered simmer with plenty of liquid to turn tender. Pre-cooked rice would overcook into mush and the meatballs would fall apart.

Can I use brown rice or instant rice?

Brown rice is not a good fit; it needs roughly twice the cooking time and stays gritty in the timeframe of this recipe. Instant (minute) rice works — shorten the covered simmer to about 25 minutes — though the texture is softer and you lose some of the signature quill effect. Parboiled (converted) rice behaves almost identically to regular long-grain and is a fine swap.

Why is the rice in my porcupine meatballs still crunchy?

Crunchy rice almost always means the simmer was too short, too hot, or too dry. Keep the heat low so the sauce barely bubbles, keep the lid on so steam stays trapped, and make sure the meatballs are mostly submerged. If the sauce has reduced too far, stir in 120 ml (1/2 cup) of broth, re-cover, and give it another 10-15 minutes.

Can I make porcupine meatballs in a slow cooker?

Yes. Brown the meatballs first for flavor, then transfer them to the slow cooker, add the sauce ingredients plus an extra 120 ml (1/2 cup) of broth, and cook on LOW for 4-5 hours until the rice is tender. Avoid the HIGH setting — a hard boil can break the meatballs apart before the rice sets them.

Cooked this? Rate it.

Real ratings from real cooks. We only show a score once enough of you have weighed in — no fabricated stars.