Preheat the oven to 450°F/230°C.
Wash the carrots and celery, then roughly chop them into large pieces, keep the celery leaves but set them aside for now.
Quarter the onion, and separate the cloves of garlic from the head, you can leave the peels on.
Line a baking sheet with aluminum foil. Place the beef bones, carrots, celery (not the leaves), onion, and garlic on the lined pan.
Roast the bones and vegetables in the oven for approximately 20 minutes or until the bones get some nice color.
Carefully place the bones and vegetables along with any juices from the pan into a large stock pot.
Add the celery leaves, herbs, seasonings, and apple cider vinegar to the pot, then fill the pot with water. The water should fully cover the bones.
Place the pot on the stove, and bring to a boil. Let boil for 10 minutes then cover and reduce the heat to a low simmer. Let the bone broth simmer for 12-18 hours, stirring occasionally.
After 12-18 hours, remove the pot from heat.
Let the pot cool for 15-30 minutes then strain the broth through a fine mesh strainer into another large container with a lid, and transfer the broth to the refrigerator to chill overnight.
You can choose to either discard the bones and veggies at this point, or you can make a second batch with the same bones, this is called a remouillage. Put them back into the stock pot, fill with water and new seasonings, and simmer the bones again for another 12-18 hours. After the second batch, discard the bones and vegetables.
After the broth has chilled overnight, there will be a solid layer of fat on the top. Scrape the layer of fat off and discard. The remaining broth will be gelatinous in texture. Spoon it into airtight storage containers, and store in the fridge for 4-5 days or in the freezer until ready to use.