First, to check the decomposition of a product of representations, you may use, as noticed by user26143, the tool Form Interfact to Lie.
Choose Tensor product decomposition, then choose $A_1$ for $SU(2)$, or $A_2$ for $SU(3)$,click sur "Proceed", type your representation, and click on "Start" to have the decomposition. The name of the representations in this tool corresponds to the Dinkin indices of the representation.
For instance, for $SU(2)$, the "spin-one" representation to the $2$ representation (a representation of spin $j$ corresponds to a $2j$ Dinkin-indiced representation).For $SU(3)$, the fundamental representation $3$ is $(1,0)$ while the antifundamental representation is $\bar 3$, or $(0,1)$. For $SU(3)$, the adjoint representation is $8= (1,1)$, the singlet representation is $1=(0,0)$, the symmetric $2-$representation is $6=(2,0)$
You have, then, for $SU(3)$ :
$3\otimes\bar 3 = 8 \oplus 1 \quad\quad 3\otimes 3 = 6 \oplus \bar 3$
Why? In fact, for $SU(N)$, you may give an upper indice for the fundamental representation, and a lower indice for a anti-fundamental representation. A singlet representation has no indice, while an adjoint representation has both a upper and a lower indice. Finally, the totally antisymmetric tensor, $\epsilon_{\mu\nu}$ for $SU(2)$ ,and $\epsilon_{\mu\nu\rho}$ for $SU(3)$ establish a duality between representations.
Take for instance $3\otimes\bar 3$, you have the representation $U^i V_j$. From this, you may build the singlet $U^i V_i$, and the last $8$ degrees of freedom correspond to the (traceless) adjoint representation $A^i_j$. With Dynkin indices, this gives you $(1,0) \otimes (0,1) = (1,1) \oplus (0,0)$
Now, take $3\otimes 3$, you have the representation $U^i V^j$, From this, you may build the symmetric $2$-representation $6$ or $(2,0)$, $6=\frac{3*4}{2}$, the other three degrees of freedom correspond to the anti-symmetric $2$-representation $A^{ij}$. However, by duality, it is the same representation as $B_k = \epsilon_{kij}A^{ij}$. So, it is simply the anti-fundamental representation $\bar 3$. With Dynkin indices, this gives you $(1,0) \otimes (1,0) = (2,0) \oplus (0,1)$
Now, for $SU(2)$, the "spin-one" representation $3$ ($2$ in Dinkin indice), may be seen also as an "adjoint" representation for $SU(2)$, a traceless $A^i_j$ . So $3\otimes 3$ corresponds to $A^i_jB^{i'}_{j'}$. From this, you may build a singlet ($0$ in Dynkin indices, "spin zero" ) $A^i_jB^{j}_{i}$, you may build quantities like (traceless) $A^i_jB^{j}_{j'}$ or $A^i_jB^{i'}_{i}$, which correspond to a representation with a lower indice and a upper indice, and this is in fact the adjoint representation ($2$ in Dynkin indices, or "spin one"), the last $5$ degrees of freedom belonging to the representation $4$ in Dynkin indices ("spin $2$"). So you have : $3 \otimes 3 = 1\oplus 3\oplus 5$, or, in Dynkin indices, $2 \otimes 2 = 0\oplus 2\oplus 4$
Références :
Zee (Quantum Field in a Nutshell) Appendix B (A Brief review of Group Theory)
Pierre Ramond (Group Theory, A PHysicist's Survey, Cambridge)