The offense was stagnant and forcing shots. The defense was porous and generous with open 3-point looks. The Jazz were down 21 early and looking for all the world like they were headed for a dubious season sweep at the hands of the Orlando Magic.

But then … the ball started moving, the defense started rotating, and Donovan Mitchell started dominating.

The Jazz guard’s epic second half proved a big catalyst in Utah’s 106-93 comeback win Wednesday night in the opener of a four-game homestand at Vivint Smart Home Arena.

After starting the game shooting just 1 for 5, Mitchell hit 11 of his next 16, totaling 33 points and — just as importantly — seven assists.

“This group, what they did, given the fact that we were down and the way we started, it’s pretty impressive,” said coach Quin Snyder. “This is a heck of a win for our team.”

The way it started, a comeback seemed highly improbable.

Orlando’s frontline was sizzling behind the 3-point arc as Utah’s defenders failed to properly rotate to them — Jonathan Isaac nailed a trey, Aaron Gordon hit two in a row, and Nikola Vucevic connected as part of a 15-0 run.

Meanwhile, Utah’s offense was as stagnant as its defense was ineffectual. A lack of ball movement led to Mitchell’s 1-for-5 start, as he continually ignored open teammates. Then again, it’s not like they were hitting the shots they did take, as Kyle Korver started 1 for 6, and Joe Ingles 2 for 8.

After halftime, though, it all turned around.

Orlando went through a five-possession stretch that included four missed shots and a turnover — and that proved microcosmic of the third period as a whole.

Asked what changed after the break, Mitchell was concise: “Defensive intensity.

“Even if the shots don’t go in, our defense has to elevate. Our defense was spectacular in the second half,” he added. “… Those same plays they ran in the first half, [after halftime] you saw airballs, you saw them missing short because we were making it a little bit tougher on them.”

Corresponding with that newfound intensity was increased efficiency.

Mitchell began making correct reads and found teammates cutting to the hoop for easy baskets.

Deflections turned into steals, which turned into fast-break opportunities the other way. Sure enough, a Rudy Gobert steal became an outlet pass to Raul Neto — who got almost 31 minutes of action with Ricky Rubio and Dante Exum both out — and his transition layup gave Utah its first lead of the game at 76-75 with 1:23 left in the third quarter.

In all, the Magic wound up shooting just 5-for-21 and committed six turnovers in the period, and the Jazz outscored the Magic 32-12 in the frame.

“We turned our mentality to getting stops, and, from that point on, letting our defense dictate the tempo of the offense,” said Jae Crowder. “Once we got into those guys and made it tough, we were able to get some momentum on offense and some shots were able to fall.”

And really, once Utah got that momentum, Orlando never got it back. After making 9 of 14 from deep in the first half, the Magic were just 4 of 19 afterward.

The Jazz won the second half by a 60-30 margin. Ingles wound up totaling 16 points and seven assists. Gobert had 12 points and 14 rebounds. Korver hit 3 of 7 from deep for 11 points. And Neto got 10 points and three assists in his first start of the season.

And Snyder came away pleased that this team didn’t allow an awful start to result in a terrible result.

“We missed a couple shots — we had some good looks — and it impacted our focus, and that impacts our execution,” Snyder said.” So we didn’t let that in. We kept guarding, and then we started making some shots. Obviously, we defended the second half pretty darn well.”