Preheat your oven to 450°F (230°C). Line a large baking sheet with aluminum foil.
Arrange the beef bones in a single layer on the prepared baking sheet. Roast for 30-40 minutes, turning once halfway through, until deeply browned.
Transfer the roasted bones to a large stockpot or slow cooker. Pour a cup of water onto the hot baking sheet and scrape up all the browned bits with a wooden spoon. Add this flavorful liquid to the pot.
Add the chopped carrots, celery, onion, garlic, bay leaves, peppercorns, and apple cider vinegar to the pot with the bones.
Cover everything with cold filtered water, ensuring the bones are submerged by about 2 inches.
For stovetop cooking: Bring to a boil, then immediately reduce to the lowest possible simmer. Skim off any foam or impurities that rise to the surface during the first hour.
Maintain a very gentle simmer for 12-24 hours. Add more water as needed to keep bones submerged.
During the last 30 minutes of cooking, add any fresh herbs if desired.
Once done, remove from heat and let cool slightly. Strain the broth through a fine-mesh sieve or cheesecloth into a large container, discarding the solids.
Allow the broth to cool completely. A layer of fat will solidify on top - you can either remove this or stir it back in for added richness.
Portion the cooled broth into storage containers for refrigerating or freezing.