Preheat the oven to 450°F. Add the beef bones, onion, carrots, and celery to a sheet pan. Roast in the oven for 1 hour, stirring once or twice during that time to ensure even roasting.
Remove from the oven, and carefully transfer the roasted bones and vegetables to a large stockpot. Drain the fat from the sheet pan (an old jar or disposable plastic container is good for this, and hang onto it for skimming fat throughout the process).
Deglaze the sheet pan with the white wine and 1 cup of water, scraping up any dried bits with a spatula. Pour the deglazed mixture into the pot with the bones. Add the remaining 15 cups water, and the rest of the ingredients. Heat over high heat until it just starts to bubble, but don’t boil. Immediately lower the heat to low, cover and simmer for about 2 hours. Do not stir the stock, just occasionally skim off any impurities or fat off the surface (use the jar you’ve set aside).
Reduce the stock uncovered for at least another hour or longer (I reduced it for 3 additional hours, so a total of 5 hours). Continue to skim off the impurities and fat.
When you’ve reduced it long enough to your liking, take it off the heat and carefully remove the bones and vegetables using a spider skimmer or small strainer. Line a sieve with a double layer of cheesecloth and set it over another pot or large bowl. Ladle the stock into the cheesecloth-lined sieve.
Stock can be stored in jars or plastic containers in the refrigerator or freezer (leave room for it to expand once frozen). Once the stock has cooled in the fridge you can scrape off additional fat on the surface, which will solidify. Now you discard your jar of skimmed fat. Definitely NEVER dump fat down the drain, as it will harden and clog your pipes.