Multiply Two Integer Polynomials
R, 159 153 148 bytes



function(P,Q,a=h(P),b=h(Q))paste0(b[1,]%o%a[1,],"x^",outer(b,a,"+")[2,,2,],collapse=" + ")
h=function(s,`/`=strsplit)sapply(el(s/" . ")/"x.",strtoi)


Try it online!

I really wanted to use outer, so there's almost surely a more efficient approach.