There are literally an infinite number of possible results you MIGHT expect for even that simple product. But simplify is able to give you a few choices.
f12 = simplify(f1*f2,steps = 10,all = true)
f12 =

I stopped at 10 steps. Had I asked it to go more deeply, to say 100 or 1000 steps, I would have gotten all sorts of crap. But somewhere in that mess will usually be what you want. After all, how is simplify to know what you personally think is what you want to see?
But now you can choose the result you want, as
f12(3)
ans =

Note that you cannot always guide simplify to specific results. In some cases, you can get lucky, and use rewrite to provide the answer you want, but even that is not always easy to get a specific result.