If you are wiling to assume that $C$ has a terminal object $1 \in C$, which I assume is the case as you said all finite products, you can do the following:
(As it is not clear if you are interested in a $1$-categorical statement or an $\infty$-categorical statement I'll write the proof in a very formal style which should accomodate $\infty$-categories as well with a little bit of work)
Saying that $F:C \rightarrow D$ preserve fiber products means that $F_{/1}: C \rightarrow D_{/F(1)}$ preserves all finite limits (as it preserve pullback and the initial objects).
In particular the induced functor $Prsh(C) \rightarrow Prsh(D_{/F(1)}) $ preserves all finite limits by your "well known fact".
But $Prsh(D_{/F(1)})$ identifies canonically with $Prsh(D)_{/y_D(F(1))}$ and $y_D(F(1))$ is $F_!(y_C(1))$ with $y_C$ being the terminal object of $Prsh(C)$.
In the end the functor: $F_!$ preserve all finite limits when seen as a functor from $Prsh(C)$ to $Prsh(D)_{/F_!(1)}$ but this means that $F_!$ preserve fiber product as asked.
I have ignored the fact that $D$ does not have all limits as, as far as I know, this has never been part of the assumption of your "well known fact".
Indeed, if $C$ has all finite limits and $F:C \rightarrow D$ preserve them, then in order to check that $F_!$ preserve all limits one justs need to check that for all $d \in D$ the functor $X \mapsto Hom(d,F_! ( X))$ from $Prsh(C)$ to $Set$ commutes to all finite limits.
This functor is the left Kan extention along the Yoneda embedings of $C$ of the functor $C \rightarrow Set$ which send $c$ to $Hom(d,F(c))$, which commutes to finite limits by definition.
So in the end the relevant fact is that if $C$ has finite limits $F:C \rightarrow Set$ preserves them then its left Kan extention $Prsh(C) \rightarrow Set$ also preserve finite limits. But existence of limits in $D$ never really played a role.