It’s typically the sort of thing you can’t translate literally. You will probably get several proposals that can all be good.
As far as I’m concerned I find that French focuses more on the part of the body (here the face) and the person themselves stays behind the face. This implies the use of a different verb, not avoir
Son visage reflétait/exprimait la tristesse.
L’expression de son visage reflétait la tristesse.
In those sentences I’ve used a noun (tristesse) in place of an adjective (triste). You could still use an adjective with:
Son visage (l’expression sur son visage) était triste.
If you still want to keep the person up front I suggest something like:
Elle avait l’air triste.
Which is the literal translation for "She looked sad".
1- "Sad" is triste in French. Malheureux means either
"unfortunate" when used for things or "miserable" when used for people.
2- Without further context of a chain of events we would not use the passé composé but the imparfait in that sentence. It is a mere description of an uncompleted action/state.