Since proving it requires knowing facts that have been mentioned in answers to some other questions, I decided to write a single answer which includes everything relevant to the proof.
For any three times $\{t_1, t_2, t_3\}$, we can convert $U (t_3, t_2) U (t_2, t_1) = U (t_3, t_1)$ to an equivalent equation such that the first argument of each $U$ is greater than the second. For example, if $t_2 \geq t_1 \geq t_3$, then $U (t_3, t_2) U (t_2, t_1) = U (t_3, t_1) \iff (U (t_3, t_2) U (t_2, t_1))^\dagger = U^\dagger (t_3, t_1) \iff U (t_1, t_2) U (t_2, t_3) = U (t_1, t_3) \iff U (t_2, t_3) = U (t_2, t_1) U (t_1, t_3)$.
So, w.l.o.g. we can restrict our attention to the expression
\begin{equation*}
U (t_3, t_2) U (t_2, t_1) = U (t_3, t_1)
\end{equation*}
where $t_3 \geq t_2 \geq t_1$. Because of this ordering in time,
\begin{equation*}
\begin{aligned}
U (t_3, t_2) U (t_2, t_1) &= \mathcal{T} \Biggl[\exp \Biggl(-i \int_{t_2}^{t_3} d \tau \ H (\tau) \Biggl) \Biggr] \mathcal{T} \Biggl[\exp \Biggl(-i \int_{t_1}^{t_2} d \tau^\prime \ H (\tau^\prime) \Biggr) \Biggr] \\
&= \sum_{n, m} \frac{(-i)^{n+m}}{n! m!} \int_{t_2}^{t_3} d \tau_1 \cdots \int_{t_2}^{t_3} d \tau_n \int_{t_1}^{t_2} d \tau^\prime_1 \cdots \int_{t_1}^{t_2} d \tau^\prime_m \ \mathcal{T} [H (\tau_1) \cdots H (\tau_n)] \\
& \hspace{10cm} \mathcal{T} [H (\tau^\prime_1) \cdots H (\tau^\prime_m)] \\
&= \sum_{n, m} \frac{(-i)^{n+m}}{n! m!} \int_{t_2}^{t_3} d \tau_1 \cdots \int_{t_2}^{t_3} d \tau_n \int_{t_1}^{t_2} d \tau^\prime_1 \cdots \int_{t_1}^{t_2} d \tau^\prime_m \\
& \hspace{7cm} \mathcal{T} [H (\tau_1) \cdots H (\tau_n) H (\tau^\prime_1) \cdots H (\tau^\prime_m)] \\
&= \mathcal{T} \Biggl[ \sum_{n, m} \frac{(-i)^{n+m}}{n! m!} \int_{t_2}^{t_3} d \tau_1 \cdots \int_{t_2}^{t_3} d \tau_n \int_{t_1}^{t_2} d \tau^\prime_1 \cdots \int_{t_1}^{t_2} d \tau^\prime_m \\
& \hspace{7cm} H (\tau_1) \cdots H (\tau_n) H (\tau^\prime_1) \cdots H (\tau^\prime_m) \Biggr] \\
&= \mathcal{T} \Biggl[\exp \Biggl(-i \int_{t_2}^{t_3} d \tau \ H (\tau) \Biggl) \exp \Biggl(-i \int_{t_1}^{t_2} d \tau^\prime \ H (\tau^\prime) \Biggr) \Biggr]
\end{aligned}
\end{equation*}
where in the third equation we have used a property of the time-ordering operation discussed here.
Now, we can use the BCH formula to write
\begin{align*}
\exp \Biggl(-i \int_{t_2}^{t_3} d \tau \ H (\tau) \Biggl) \exp \Biggl(-i \int_{t_1}^{t_2} d \tau^\prime \ H (\tau^\prime) \Biggr) \\
&= \exp \Biggl(-i \int_{t_2}^{t_3} d \tau \ H (\tau) -i \int_{t_1}^{t_2} d \tau^\prime \ H (\tau^\prime) + C (t_1, t_2, t_3) \Biggr) \\
&= \exp \Biggl(-i \int_{t_1}^{t_3} d \tau \ H (\tau) + C (t_1, t_2, t_3) \Biggr)
\end{align*}
where $C (t_1, t_2, t_3) \equiv -\frac{1}{2} \int_{t_2}^{t_3} d \tau_1 \int_{t_1}^{t_2} d \tau_2 [H (\tau_1), H (\tau_2)] + \text{terms with nested commutators}$.
Therefore,
\begin{align*}
U (t_3, t_2) U (t_2, t_1) &= \mathcal{T} \Biggl[\exp \Biggl(-i \int_{t_1}^{t_3} d \tau \ H (\tau) + C (t_1, t_2, t_3) \Biggr) \Biggr] \\
&= \sum_n \frac{1}{n!} \mathcal{T} \Biggl[ \Biggl(-i \int_{t_1}^{t_3} d \tau \ H (\tau) + C (t_1, t_2, t_3) \Biggr)^n \Biggr]
\end{align*}
The time-ordering operation on a product of operators which involves a commutator makes it vanish. Therefore, the only terms in the above equation which survive don't involve any commutators (See this question for more details). This means that
\begin{align*}
U (t_3, t_2) U (t_2, t_1) &= \sum_n \frac{1}{n!} \mathcal{T} \Biggl[ \Biggl(-i \int_{t_1}^{t_3} d \tau \ H (\tau) \Biggr)^n \Biggr] \\
&= \mathcal{T} \Biggl[\sum_n \frac{1}{n!} \Biggl(-i \int_{t_1}^{t_3} d \tau \ H (\tau) \Biggr)^n \Biggr] \\
&= \mathcal{T} \Biggl[\exp \Biggl(-i \int_{t_1}^{t_3} d \tau \ H (\tau) \Biggr) \Biggr] \\
&= U (t_3, t_1)
\end{align*}