Since we have a cubic polynomial, we can use a $2 \times 3$ matrix (or a $3 \times 2$ matrix) instead of a $3 \times 3$ matrix. Hence,
$$x^3 - 6 x^2 + 11 x - 6 = \begin{bmatrix} 1\\ x\end{bmatrix}^\top \begin{bmatrix} -6 & t_1 & t_2\\ 11-t_1 & -6-t_2 & 1\end{bmatrix} \begin{bmatrix} 1\\ x\\ x^2\end{bmatrix}$$
We would like to find parameters $t_1, t_2 \in \mathbb R$ such that the $2 \times 3$ matrix above is rank-$1$. If the matrix is rank-$1$, then the 1st row is a multiple of the 2nd row, i.e.,
$$\begin{array}{rl} -6 &= t_2 (11 - t_1)\\ t_1 &= t_2 (-6-t_2)\end{array}$$
which yields the cubic equation
$$t_2^3 + 6 t_2^2 + 11 t_2 + 6 = 0$$
Once we have $t_2$, the value of $t_1$ can be found via
$$t_1 = - t_2 (6+t_2)$$
However, what is the point? Initially, we wanted to find the roots of a cubic polynomial. Now we want to find the roots of another cubic polynomial. The problem is the same, only the signs of two coefficients have been flipped.
Given the "niceness" of the coefficients of the latter cubic polynomial, it is not hard to conclude that one of the roots of this cubic polynomial is $t_2 = -1$. Hence, $t_1 = 5$. One admissible $2 \times 3$ matrix is
$$\begin{bmatrix} -6 & 5 & -1\\ 6 & -5 & 1\end{bmatrix} = \begin{bmatrix} -1\\ 1\end{bmatrix} \begin{bmatrix} 6 & -5 & 1\end{bmatrix}$$
Thus, $x-1$ is a factor of the original cubic polynomial. We are left with a quadratic polynomial
$$x^2 -5 x + 6$$
whose roots can be found using the quadratic formula. The roots are $2$ and $3$. Hence,
$$x^3 - 6 x^2 + 11 x - 6 = (x-1) (x-2) (x-3)$$
However, the original cubic polynomial's coefficients are even "nicer", as they sum to zero. Why use matrices at all? Why introduce parameters? Why tune the parameters until one has a rank-$1$ matrix?
Factoring via SDP
It would be very, very nice if we could find a $2 \times 3$ rank-$1$ matrix with the desired properties, but without solving a system of polynomial equations. One option would be numerical optimization.
Consider the following equality-constrained rank-minimization problem in $\mathrm Q \in \mathbb R^{2 \times 3}$
$$\begin{array}{ll} \text{minimize} & \mbox{rank} (\mathrm Q)\\ \text{subject to} & q_{11} = -6\\ & q_{21} + q_{12} = 11\\ & q_{22} + q_{13} = -6\\ & q_{23} = 1\end{array}$$
Unfortunately, minimizing the rank is computationally hard. Thus, let us minimize the nuclear norm of $\mathrm Q$ instead, which we denote by $\| \mathrm Q \|_*$ and which is a convex proxy for rank and, thus, computationally easy. Hence,
$$\begin{array}{ll} \text{minimize} & \| \mathrm Q \|_*\\ \text{subject to} & q_{11} = -6\\ & q_{21} + q_{12} = 11\\ & q_{22} + q_{13} = -6\\ & q_{23} = 1\end{array}$$
which can be cast as a semidefinite program (SDP). Using Python + NumPy + CVXPY:
from cvxpy import *
import numpy as np
# define matrices
M0 = np.array([(1,0,0), (0,0,0)])
M1 = np.array([(0,1,0), (1,0,0)])
M2 = np.array([(0,0,1), (0,1,0)])
M3 = np.array([(0,0,0), (0,0,1)])
# matrix variable
Q = Variable(2,3)
# objective function
objective = Minimize( norm(Q,"nuc") )
# constraints
constraints = [ trace(M0.T * Q) == -6,
trace(M1.T * Q) == 11,
trace(M2.T * Q) == -6,
trace(M3.T * Q) == 1 ]
# create optimization problem
prob = Problem(objective, constraints)
# solve optimization problem
solution = prob.solve()
print Q.value
This script produces the following output
[[-6.00198563 5.14853065 -1.00979949]
[ 5.85031083 -4.99445918 0.99856348]]
Rounding to the nearest integer, we again obtain the rank-$1$ matrix
$$\color{blue}{\begin{bmatrix} -6 & 5 & -1\\ 6 & -5 & 1\end{bmatrix}} = \begin{bmatrix} -1\\ 1\end{bmatrix} \begin{bmatrix} 6 & -5 & 1\end{bmatrix}$$
Again, we conclude that $x-1$ is a factor of the original cubic polynomial.
Addendum
Let us now factor the quadratic polynomial $x^2 - 5 x + 6$. Using Python + NumPy + CVXPY again:
from cvxpy import *
import numpy as np
# define matrices
M0 = np.array([(1,0), (0,0)])
M1 = np.array([(0,1), (1,0)])
M2 = np.array([(0,0), (0,1)])
# matrix variable
Q = Variable(2,2)
# objective function
objective = Minimize( norm(Q,"nuc") )
# constraints
constraints = [ trace(M0.T * Q) == 6,
trace(M1.T * Q) == -5,
trace(M2.T * Q) == 1 ]
# create optimization problem
prob = Problem(objective, constraints)
# solve optimization problem
solution = prob.solve()
print Q.value
This script produces the following output
[[ 5.99839973 -2.5001549 ]
[-2.5001549 0.99808956]]
Rounding to the nearest integer is now not so straightforward. Should $-2.5001549$ be rounded up or down? There are $4$ possibilities, $2$ of which are admissible, i.e., do produce a rank-$1$ matrix, namely,
$$\color{blue}{\begin{bmatrix} 6 & -2\\ -3 & 1\end{bmatrix}} = \begin{bmatrix} -2\\ 1\end{bmatrix} \begin{bmatrix} -3 & 1\end{bmatrix}$$
$$\color{blue}{\begin{bmatrix} 6 & -3\\ -2 & 1\end{bmatrix}} = \begin{bmatrix} -3\\ 1\end{bmatrix} \begin{bmatrix} -2 & 1\end{bmatrix}$$
each of which allows us to conclude that $x^2 - 5 x + 6 = (x-2) (x-3)$. Lastly,
$$x^3 - 6 x^2 + 11 x - 6 = (x-1) (x-2) (x-3)$$