Place beef bones in a large stockpot and cover with cold water. Bring to a boil, then reduce heat and simmer for 15 minutes. Drain and rinse the bones.
Return the bones to the pot and add the onion, carrot, and celery. Cover with 8-10 cups of cold water. Bring to a boil, then reduce heat and simmer for at least 6-8 hours, or up to 12 hours for a richer stock. Skim off any foam or impurities that rise to the surface.
In a separate pan, heat a tablespoon of oil over medium heat. Add the tomato paste and cook for 2-3 minutes, stirring constantly, until it darkens slightly.
Add the tomato paste to the stockpot. Tie the bay leaf, peppercorns, parsley, and thyme together in a cheesecloth bundle and add to the pot.
Continue to simmer for another hour. Remove the cheesecloth bundle and discard. Strain the stock through a fine-mesh sieve lined with cheesecloth. Let cool completely, then skim off any solidified fat from the surface.