Here is a self-contained proof not using any classification. With some effort, it can be made to work under weaker assumptions: the curvature is nonnegative outside a compact set and is bounded from above. It is a variation of the proof of the Soul Theorem via Sharafutdinov's retraction.
Fix a reference point $o\in M$ and define a Busemann function $b:M\to\mathbb R$ by
$$
b(x) = \limsup_{y\in M,\ d(o,y)\to\infty} ( d(o,y)-d(x,y))
$$
where $d$ is the Riemannian distance (note the non-standard sign convention). The flat ends assumption implies the following key features:
To prove this, first observe some general properties of $b$. First, $b$ is 1-Lipschitz. Second, $b$ goes to $+\infty$ along any geodesic ray (essentially by the triangle inequality). Third, for any $x\in M$ there exists a geodesic ray starting at $x$ such that $b$ grows at unit speed along this ray (take a limit of geodesic segments $[xy_i]$ where a sequence $y_i$ realizes the $\limsup$). Let me call such rays "calibrating". Finally, for every compact set $K$ there is a compact set $K'$ such that no calibrating ray starting outside $K'$ intersects $K$. Indeed, otherwise a sequence of such rays would converge to a geodesic line, and $b$ would going to $-\infty$ in one of the directions along this line.
Now convexity of $b$ outside a compact set follows easily. Let $x_0\in M$ and $\gamma$ be a calibrating ray starting from $x_0$. Then $b(\gamma(t))=b(x_0)+t$ for all $t\ge 0$. Since $b$ is 1-Lipschitz, it follows that
$$
b(x) \ge b(x_0) + (t-d(\gamma(t),x))
$$
for every $y\in M$, with equality for $x=x_0$. So $b$ is supported from below at $x_0$ by a function of the form $x\mapsto const - d(\gamma(t),x)$. If $x_0$ is sufficiently far from $o$, the ray $\gamma$ is contained in the flat part. Hence the distance to $\gamma(t)$ is bounded from above by a similar Euclidean distance function which is nearly linear near $x_0$ if $t$ is large. Existence of such lower bounds for $b$ implies that $b$ is convex.
Now let me show that sublevels of $b$ are compact. Suppose the contrary, then there is a sequence $x_i$ with $d(o,x_i)\to\infty$ but $b(x_i)\le const$. Choose a subsequence such that geodesic segments $[ox_i]$ converge to a geodesic ray $\gamma$. On this ray, mark a point $y$ where it leaves a ball containing the non-flat part of $M$. Once a segment $[ox_i]$ contains a point $y_i$ near $y$ and almost the same direction as $\gamma$ there, one observes that the derivative of $b$ along this segment at $y$ is greater than, say, 1/2. This and convexity of $b$ yield a linear lower bound for $b(x_i)$, contrary to the assumption $b(x_i)\le const$.
This proves the two key properties of $b$. Let $B_r$ denote the sublevel set $\{x:b(x)\le r\}$. Let $r_0$ be such that $b$ is convex outside $B_{r_0}$. Then, for every $R\ge r\ge r_0$, there is a distance non-increasing retraction (homotopic to identity) $f:B_R\to B_r$. Indeed, let $\varepsilon$ be smaller than the minimum injectivity radius on $B_R$. Then one retracts $B_R$ to $B_{R-\varepsilon}$ via a nearest-point projection, Locally it is just a nearest-point projection to a convex set in a Euclidean space, so it is well-defined and does not increases distances. Iterating this construction yields a retraction from $B_R$ to $B_r$. Moreover the complement of $B_r$ is mapped to the boundary of $B_r$.
Now let us turn to the injectivity radius. Let $r$ be such that $B_{r/2}$ contains the not-flat part of $M$ and $\rho_0$ is the minimum of $r/10$ and the injectivity radius on $B_{2r}$. I claim that the injectivity radius is no less than $\rho_0$ everywhere. Suppose the contrary. Then, somewhere outside $B_r$ there is a geodesic loop of length $2\rho<2\rho_0$. This loop is not contractible in the flat part. Apply the above retraction $f:B_R\to B_r$ where $R$ is so large that the loop is contained in $B_R$. The image is a loop in the boundary of $B_r$ with length $\le 2\rho$ and still non-contractible in the flat part. Hence the injectivity radius at $f(x)$ is at most $\rho$, a contradiction.