As Henning's answer suggests the best substitute depends on the use-case. The two options that I use most commonly are silken tofu and cashews.
- soak the raw cashews for at least 15 minutes, preferably for an hour. Apparently, this breaks down the chemicals on the surface that inhibit digestion, but it also helps with the creamy texture, in my experience.
- rinse very thoroughly, for example in a colander or sieve, for several minutes
- transfer to a blender with a little (say, one tablespoon per 50g cashews in addition to them being wet from rinsing) water or neutral oil (I generally use some of my cooking broth if that's what the cream is for, or melted coconut oil or safflower oil if it's for a dessert) until the consistency is acceptable to you
- use in the recipe, replacing one to one
Silken tofu cream
This is awesome for making dips (for example, to make sour cream for fajitas I add lime juice and coriander) and dressings (and I guess is much healthier than dairy cream as it's high in protein and low in fat). I also make the middle part of cheesecakes with silken tofu blended with cashews or coconut oil or just melted chocolate (because silken tofu is too liquid by itself for this purpose).
You can't whip it, but the consistency after blending is thicker than cream, similar to a full-fat yogurt.
I use it more generously than packaged cream substitutes; I add about 1.5 - 2 times the amount of tofu compared to the amount of processed oat or soya cream or coconut cream I would use.
I can't promise it won't curdle. It will happily take vinegar or citrus juice without any separation, but I haven't tested heating it.
To get just something like the natural sweetness of cream, about 1/4 tsp sugar per 200g tofu helps it along. I add more for sweet recipes
- put the tofu and all the other ingredients for your sauce/dip/dressing/whatever into a blender
- blend until smooth!