A rich, unsalted beef stock that’s designed for cooking, not sipping. Roasting the bones and vegetables builds deep flavor and color, while a gentle simmer keeps it clean and balanced.

Beef stock is the quiet backbone behind stews that taste “all day,” gravies that cling, and sauces that feel restaurant-level without any weird tricks. This version is a classic brown stock: bones are roasted until deeply browned, which creates that signature mahogany color and roasted-meat aroma you want in braises, French onion soup, and pan sauces.
A modest amount of mirepoix (onion, carrot, celery) rounds out the meatiness with sweetness, while tomato paste and mushrooms (optional) add subtle umami that reads as “more beefy,” not “tomato-y.” Because the stock is unsalted, you can reduce it without worry and season your final dish accurately. When it’s done, it should taste full and beef-forward, not watery, and it may set up slightly gel-like when chilled (a good sign that collagen made its way into the pot).
This is the kind of stock that makes simple cooking taste intentional: lentils get richer, sauces get silkier, and anything simmered in it comes out tasting more complete.
What to Serve With: Use this stock as the cooking liquid for stews, pot roast, short ribs, French onion soup, and rich gravies. It’s also fantastic for deglazing after searing, then reducing into a quick pan sauce.
Beef Stock vs Beef Broth: What’s the Difference?
Beef stock is usually built from bones (especially joints/knuckles) and simmered long enough to pull out collagen, which gives it body and that silky, slightly sticky feel. It’s often roasted first for deeper color and flavor, and it’s typically left unsalted so you can reduce it and season your final dish with precision.
Beef broth is generally more meat-forward (or made from less-collagen-rich parts) and is often seasoned so it tastes good straight from the pot or carton. The texture tends to be lighter, and it won’t usually gel as firmly in the fridge.
Store-bought labels can be inconsistent, so look at sodium and the ingredient list: if it’s salty and ready-to-sip, it behaves like broth. When swapping, the rule is simple: using broth instead of unsalted stock, hold salt until the end; using stock instead of broth, you’ll likely need a pinch more salt (and sometimes a bright finish like herbs or a splash of vinegar/lemon in the final dish).
Beef Stock Ingredients

Beef bones – Use a mix for best results: knuckle/joint bones for gelatin and marrow bones for beefy richness. A few meaty bones (like shank) boost flavor, but too much lean meat can make the stock taste more like stew.
Tomato paste – A small amount deepens color and adds savoriness without turning the stock into “tomato broth.” If you want the most neutral beef profile, use the lower amount.
Mushrooms (optional) – They add quiet umami that reads as fuller beef flavor; if you dislike mushroom notes, keep them out and don’t simmer longer to “make up for it” (that’s how stock goes muddy).
Water level – Start with cold water and keep the bones covered by about 1 inch / 2.5 cm; if the pot reduces too far and bones poke out, top up with hot water so extraction stays steady.
Beef Stock Variations
- Cleaner brown stock (clearer flavor, less roasty edge)
- Change: Before roasting, cover the bones with cold water, bring just to a boil, then drain and rinse. Roast as usual, then simmer as written (you’ll likely have less foam to skim).
- Result: A cleaner-tasting stock with a smoother, less aggressively roasted finish.
- Extra gelatin stock (silkier body for sauces)
- Change: Swap 1 lb / 450 g of marrow bones for 1 lb / 450 g knuckle/joint bones, or add 1 lb / 450 g oxtail. Keep water the same and simmer 6–7 hours.
- Result: More body and “jiggle” when chilled, which translates to glossier sauces and a richer mouthfeel.
- Concentrated glace starter (big flavor in small portions)
- Change: After straining, simmer the stock uncovered until reduced by half. Cool, then freeze in 2 tbsp / 30 ml portions.
- Result: A punchy concentrate that melts into pan sauces, braises, and gravies like an instant flavor boost.
Storage
Fridge: 3–4 days, tightly covered.
Freezer: 2–3 months for best quality (longer is possible, but flavor dulls).
Reheat: Warm gently on the stove over medium-low heat until steaming; skim any foam if needed.
Allergens & Substitutions
Contains: none of the major allergens by default (but celery can be an allergen for some).
Beef bones: You can swap in veal bones 1:1 for a lighter, silkier stock; keep some joint bones for body.
Mushrooms: Optional; skip for a cleaner beef profile, or add 1 tbsp / 15 g extra tomato paste for similar savory depth.
Red wine: Optional; replace with 1/2 cup / 120 ml water plus 1 tsp / 5 ml balsamic vinegar for a softer, slightly sweet complexity.
Homemade Beef Stock
- Total Time: 9 hours 25 minutes
- Yield: 8 cups
- Diet: Dairy-Free, Gluten-Free, Keto, Low-Carb, Paleo
Description
A rich, unsalted beef stock that’s designed for cooking, not sipping. Roasting the bones and vegetables builds deep flavor and color, while a gentle simmer keeps it clean and balanced.
Ingredients
- 5 lb / 2.3 kg – beef bones ((mix of knuckle/joint and marrow bones))
- 1 lb / 450 g – meaty beef shank bones ((optional, for extra flavor))
- 2 large – yellow onions (quartered (some clean papery skin optional))
- 2 medium – carrots (cut into 2-inch / 5 cm chunks)
- 2 stalks – celery (cut into 2-inch / 5 cm chunks)
- 8 oz / 225 g – mushrooms (halved (optional))
- 3 tbsp / 45 g – tomato paste
- 2 bay leaves
- 1 tsp / 3 g – black peppercorns
- 6 sprigs – fresh thyme (optional)
- 1 cup / 20 g – parsley stems (optional)
- 1/2 cup / 120 ml – dry red wine (optional, for deglazing)
- 2 tsp / 10 ml – apple cider vinegar (optional)
- 16 cups / 3800 ml – cold water (plus more as needed)
Instructions
Roast for depth
- Preheat the oven to 450°F / 230°C (rack in the middle).
- Spread the beef bones (and shank bones, if using) in a roasting pan. Roast 45–60 minutes, turning once halfway, until deeply browned (not just “tan”).
- Scatter in the onions, carrots, celery, and mushrooms (if using). Dot the tomato paste over everything. Roast 20–25 minutes more, until the vegetables have browned edges and the pan has lots of dark bits.
- Move the bones and vegetables to a stockpot. If using wine, pour it into the hot roasting pan and scrape up the browned bits; add that liquid to the pot.
Simmer gently (don’t boil)
- Add bay leaves, peppercorns, thyme and parsley stems (if using), vinegar (if using), and the cold water.
- Bring just to the edge of a boil over medium-high heat, then immediately reduce to a bare simmer (a few lazy bubbles). Avoid a rolling boil, which can emulsify fat and proteins and make stock cloudy.
- Skim any foam and excess fat that rises during the first 30–45 minutes (especially important if you want a clean-tasting stock).
- Simmer, partially covered, for 6 hours. Check every hour and add a splash of hot water if bones start peeking above the surface.
Strain, chill, and portion
- Turn off the heat. Your stock is done when it tastes deeply beefy (not watery) and has reduced a bit; the bones will look pale and “spent.”
- Let the pot sit 10 minutes so solids settle. Then carefully ladle and pour through a fine-mesh strainer into a heatproof bowl or pot. Don’t press hard on the solids (it can add harshness and cloudiness).
- Cool quickly in shallow containers or an ice-water bath. Aim to cool from hot to warm fast, then down to fridge-cold promptly for safety.
- Refrigerate overnight. Lift off the solid fat cap (save it for roasting potatoes, if you like), then portion the stock for the fridge or freezer.
Notes
- Roast until truly browned. Pale bones make a pale, timid stock.
- Keep the simmer gentle; boiling can whip fat and proteins into the liquid and leave you with a greasy, cloudy stock.
- Skim early, then relax. Most of the “scum” shows up in the first hour; that’s your best window for a cleaner finish.
- Don’t overdo the vegetables. Too much carrot can turn things sweet, and too much celery can take over.
- Keep it unsalted. You’ll season the final dish better, especially if you reduce the stock.
- Cool it fast and portion it small. Big deep containers stay warm too long in the fridge.
- If your stock tastes flat, it usually needs reduction or salt later in the final dish, not more simmer time with vegetables.
- Want “stock gel”? Add more knuckle/joint bones next time (that’s where the collagen lives).
- Prep Time: 25 minutes
- Cook Time: 7 hours
- Category: Basics, Soups, Stocks and Broths
- Cuisine: French
Pressure Cooker / Instant Pot Option
Roast the bones/vegetables as written to keep the deep brown-stock flavor. Transfer everything to the Instant Pot and cover with cold water to about 1 inch above the bones, staying under the max fill line. Pressure cook on High for 120 minutes, then let it naturally release (at least 20–30 minutes) before opening. Because there’s little evaporation under pressure, the flavor can be slightly lighter than stovetop—reduce the strained stock on the stove if you want it more concentrated. Skim after chilling just like the stovetop method; you’ll still get great body, especially if you used knuckles/joints.

Nutrition & Dietary Information
Nutrition Facts
Low carb | ✅ |
Keto | ✅ |
High Protein | ❌ |
Gluten free | ✅ |
Low sugar | ✅ |
Dairy-free / Lactose free | ✅ |
Vegetarian | ❌ |
Vegan | ❌ |
Low sodium | ✅ |
Low Fat | ✅ |
Paleo | ✅ |
Pescatarian | ❌ |
Nut Free | ✅ |
Egg Free | ✅ |
Soy Free | ✅ |
Sesame free | ✅ |
Nutrition information is an estimate. For medical or dietary needs, calculate with your specific ingredients and consult a professional.
Common Problems & Fixes
Likely cause: The simmer was too vigorous (or the pot was stirred), which emulsifies fat and proteins into the liquid.
Fix: Keep it at a bare simmer (lazy bubbles) and don’t stir; skim early; strain without pressing, then chill and lift off the fat cap for a cleaner finish.
Likely cause: Not enough browning on the bones, too much water for the bone load, or not enough reduction at the end.
Fix: Roast until deeply browned, keep the bones just covered (top up only as needed), and reduce the strained stock uncovered until the flavor tastes concentrated.
Likely cause: Vegetables got scorched, or too much papery onion skin/peppercorn bite carried into the simmer.
Fix: Skip any blackened bits from the roasting pan, use only clean onion skin (or none), and keep peppercorns modest; if it’s already bitter, dilute with water/unsalted stock when using and balance in the final dish with a tiny touch of acid/sweetness.
Likely cause: Too much carrot/onion relative to bones, or aromatics cooked too long and started to dominate.
Fix: Keep the vegetable load modest and cut chunky; for an even beefier profile next time, pull out the vegetables and herbs after 1–2 hours of simmering and let the bones keep going.
Likely cause: Not enough collagen-rich joints/knuckles, too much water, or the heat ran too hot.
Fix: Add more joint/knuckle bones (or oxtail) next time, keep bones covered by about 1 inch, and maintain a gentle simmer; you can also reduce the finished stock to concentrate gelatin.
Likely cause: It cooled too slowly (a full pot holds heat for a long time), giving bacteria a chance to grow.
Fix: Cool fast in an ice-water bath or shallow containers, then refrigerate; reboil only what you’ll use and keep the rest cold.
