Some nights, I want dinner to taste like it came from Grandma’s kitchen, the kind of pot-on-the-stove comfort that got families through lean times. That is exactly where porcupine meatballs come from, a Depression era recipe built on simple ground beef recipes and a little long grain white rice that magically stretches the meal.
In my kitchen, I keep the classic spirit, but I slip in one chef move that changes everything, building a rich tomato sauce that tastes deep and “cooked,” not just poured from a can. If you love a one-skillet dinner that feels cozy and reliable, this one is for you.
Why You’ll Love This Recipe
Flavor Depth: Searing first gives you that savory Maillard reaction crust, and it perfumes the whole pan. I learned the hard way that simmering pale meatballs never builds the same comfort food backbone.
The Secret Twist: Deglazing the skillet, even with a tiny splash of stock and a dash of balsamic vinegar, lifts every browned bit into the gravy. That quick step makes the tomato sauce taste restaurant-quality instead of “canned.”
Texture Perfection: The meatballs turn tender while the rice cooks into fluffy little “quills.” You get soft, juicy bites with those classic porcupine spikes peeking out.
Pantry Friendly: Tomato sauce and Worcestershire sauce do the heavy lifting, so you are not hunting for anything fancy. It is the kind of meal you can pull off on a weeknight with what is already around.
One-Pan Magic: Everything finishes in a single skillet, sauce and all. Fewer dishes means you can sit down sooner, while the house still smells like simmering tomatoes and onions.
Ingredients and Substitutions
These porcupine meatballs are built from humble staples, but each one matters, especially the rice-to-liquid balance and that tomato gravy. Keep everything measured, and the texture turns out just right.
Ingredients
- 1 pound lean ground beef
- 1/2 cup uncooked long grain white rice
- 1/2 cup water
- 1/3 cup chopped onion
- 1 teaspoon kosher salt
- 1/2 teaspoon celery salt
- 1/8 teaspoon garlic powder
- 1/8 teaspoon ground black pepper
- 1 tablespoon canola oil
Sauce:
- 1 (15 ounce) can tomato sauce
- 1 cup low sodium chicken stock
- 2 teaspoons Worcestershire sauce
- 1 teaspoon granulated sugar
Ingredient Notes & Substitutions
Uncooked long grain white rice: This is non-negotiable for true porcupine meatballs, because it cooks slowly and pushes out into those signature spikes. Minute rice tends to go soft and gummy, and brown rice usually stays too firm by the time the meat is done.
Lean ground beef: I like 85/15 or 90/10 for a tender bite without a greasy sauce. If you only have ultra-lean beef, collective kitchen wisdom says a binder like an egg can help, but I keep this version classic and focus on gentle mixing and a calm simmer.
Tomato sauce: For a sweeter, vintage profile, condensed tomato soup can stand in for the sauce, and it leans into that old-school comfort food vibe. If you go that route, taste the gravy near the end since the sweetness is already built in.
How to Make porcupine meatballs
Mix and Shape
- Set everything out so you are not fumbling with spices mid-mix, because quick handling keeps meatballs tender. The goal is a mixture that looks evenly speckled with rice and onion, not packed and tight.
- In a bowl, combine the ground beef, uncooked long grain white rice, water, chopped onion, kosher salt, celery salt, garlic powder, and black pepper. Mix with your hands or a fork just until it comes together, stopping the moment it looks uniform so the meat stays soft.
- Roll the mixture into 12 meatballs, aiming for the same size so they cook evenly. They should feel moist and cohesive, not crumbly.
Sear for Deep Flavor
- Heat the canola oil in a large skillet over medium-high heat until it shimmers and moves easily across the pan. When the oil looks ready, you should hear an immediate sizzle when a meatball touches down.
- Add the meatballs and let them brown, turning once halfway through, for about 8 minutes total. You are looking for a deep golden crust and a toasty, beefy aroma, this is the flavor foundation that makes the gravy taste “grown up.”
- Drain and discard excess grease, keeping the browned bits in the skillet. Those little stuck-on spots are pure gold for the sauce.
Deglaze, Simmer, and Let the Rice Bloom
- With the pan still warm, pour in the tomato sauce, chicken stock, Worcestershire sauce, and sugar, then reduce the heat to medium-low. In my kitchen I often splash in a tiny dash of balsamic vinegar as a pantry trick, scraping the bottom as the liquid loosens the fond into the sauce.
- Set the meatballs back into the skillet, nestling them so they are mostly surrounded by sauce. Once the sauce is barely bubbling, cover the skillet and keep it at a gentle simmer.
- Simmer until the meatballs are no longer pink in the center and the rice is tender, about 45 minutes. You will see the rice poke out like quills, and the sauce will thicken into a spoon-coating tomato gravy.
- If the sauce starts looking too dry before the rice is done, stir in more stock a little at a time. You want enough moisture for the rice to finish cooking without turning the simmer into a boil.
Secrets for Perfectly Tender Rice
The Steam Factor: The rice cooks from the moisture trapped inside the meatball and the steam rising from the sauce, so a tight lid matters. Every time the lid lifts, you let the heat and steam escape, and that is when “hard rice” happens.
Avoid the Boil: Keep the sauce at a gentle simmer, not a rolling bubble. A hard boil can knock the meatballs around until they crack, and the rice never gets the calm, steady cooking it needs.
Liquid Management: If your gravy thickens too fast, a splash more stock brings it back to life. The way rice drinks up seasoned liquid here reminds me of French onion rice, where absorption is the whole point and patience pays off.
Pro Tips & Troubleshooting
Pro Tips
- Use a cookie scoop for uniform meatballs, so all 12 finish at the same time.
- Mix just until combined, overworking the beef makes the texture tight.
- Sear until deeply browned, that crust helps them hold together during simmering.
- Let the skillet run at a gentle simmer for the full 45 minutes, calm heat keeps the rice tender.
- Rest the covered pan off the heat for 5 minutes, the rice plumps and the sauce settles.
Common Mistakes to Avoid
- Crunchy rice usually means the heat was too high and the liquid evaporated early.
- Meatballs can cook with hard rice if they are not nestled into enough sauce.
- Falling apart often comes from over-stirring, let the meatballs sit and simmer quietly.
- Ultra-lean beef can turn dry, a little fat helps tenderness and structure.
- Boiling breaks meatballs, keep bubbles small and steady instead.
Serving & Storage
Serving Ideas
I love these spooned over creamy mashed potatoes, because that rich tomato gravy was made for soaking. A bright green side like roasted broccoli or steamed green beans keeps the plate from feeling heavy.
A little chopped parsley or basil on top wakes everything up right before serving. If you have extra ground beef in the fridge this week, cozy classics like cottage pie scratch the same comfort-food itch with a different vibe.
Storage & Make-Ahead
Refrigerate leftovers in a tight container, the sauce actually gets better by the next day. Reheat gently on the stove with a splash of water to loosen the gravy, then cover for a few minutes so the meatballs warm through without drying out.
For freezing, cooked meatballs hold their texture best because the rice has already finished swelling in the sauce. Raw meatballs can be frozen too, but the rice sometimes cooks unevenly after thawing, so I save that method for emergencies.
One-pan Porcupine Meatballs
Equipment
- Large Skillet with Lid
- Mixing Bowl
Ingredients
- 1 pound lean ground beef
- 1/2 cup uncooked long grain white rice
- 1/2 cup water
- 1/3 cup chopped onion
- 1 teaspoon kosher salt
- 1/2 teaspoon celery salt
- 1/8 teaspoon garlic powder
- 1/8 teaspoon ground black pepper
- 1 tablespoon canola oil
Sauce
- 1 can tomato sauce (15 ounce)
- 1 cup low sodium chicken stock
- 2 teaspoons Worcestershire sauce
- 1 teaspoon granulated sugar
Instructions
Mix and Shape
- In a large bowl, combine the ground beef, uncooked long grain white rice, water, chopped onion, kosher salt, celery salt, garlic powder, and black pepper. Mix gently with your hands or a fork just until the ingredients are combined and uniform.
- Roll the mixture into 12 meatballs, aiming for equal size so they cook evenly.
Sear for Deep Flavor
- Heat the canola oil in a large skillet over medium-high heat until it shimmers. Add the meatballs carefully.
- Brown the meatballs, turning once halfway through, for about 8 minutes total. Look for a deep golden crust to build flavor.
- Drain and discard the excess grease from the pan, but leave the browned bits stuck to the bottom of the skillet.
Deglaze, Simmer, and Let the Rice Bloom
- Pour in the tomato sauce, chicken stock, Worcestershire sauce, and sugar, scraping the bottom of the pan to release the browned bits. Reduce the heat to medium-low.
- Nestle the meatballs back into the skillet so they are mostly surrounded by the sauce. Once bubbling, cover the skillet with a tight lid and maintain a gentle simmer.
- Simmer for about 45 minutes until the meatballs are cooked through and the rice is tender and spiking out. If the sauce becomes too dry, stir in a splash of stock.
- Remove from heat and let the pan rest covered for 5 minutes to allow the rice to plump and the sauce to settle before serving.
Notes
Nutrition
Conclusion
Porcupine meatballs are the kind of comfort food that makes a house feel lived-in, tender beef, fluffy rice spikes, and that tangy tomato gravy. The sear-and-deglaze trick is my little love letter to the classic, it keeps the soul of the dish while giving it real depth.
If you enjoy this meatball-and-rice flavor family, porcupine soup is a natural next bowl, especially when you want something extra cozy and spoonable.






