As David Speyer also notes, this question is fairly elementary and computational; so it might better be asked first on Stack Exchange. Aside from that, it's useful to realize that the irreducible representations of $\mathrm{SU}(3)$ are essentially the same as those of $\mathrm{SL}_3(\mathbb{C})$ or its Lie algebra. They can be parametrized either by highest weights (Cartan-Weyl) or by partitions, and their tensor products are well-studied. In fact, there may still be some handy online programs for computing them, as in the older Dutch project LiE.
More important, you need to distinguish clearly between a representation and its (usually different) dual even though their dimensions are the same. In weight notation, you are considering the representations of highest weight $(2,0)$ or $(0,2)$ (of dimension 6) and those of highest weight $(2,1)$ or $(1,2)$ (of dimension 15). But it matters which pair you actually tensor.
ADDED: To make the result explicit in the weight notation, the easiest method follows Brauer/Racah, and gives $$(2,0) \otimes (2,1) = (4,1) \oplus (2,2) \oplus (3,0) \oplus (0,3) \oplus (1,1).$$ Weyl's dimension formula gives $\dim (a,b) = (a+1)(b+1)(a+b+2)/2$, agreeing with $90 = 35 + 27 + 10 +10 +8$. Note that this tensor product decomposition only involves nultiplicity 1, reflecting the fact that $(2,0)$ has 6 weights with multiplicity 1. (In the Brauer/Racah algorithm, you get a sixth weight with a coordinate $-1$ and discard it. But in general, there are lots of cancellations and multiplicities.)