The “A-T-L” chants started on the field, continued in the tunnel to the Georgia Tech locker room and echoed from inside it. The Yellow Jackets shocked the Miami Hurricanes on Saturday and then shouted out their city. It was a thrilling victory in which the Jackets finally showed they may be going good places.

“That was a good one, wasn’t it?” Tech safety Tariq Carpenter said.

It was. The Jackets earned a tough victory in a strange game. They twice had go-ahead scores wiped off the scoreboard. They lost a fumble when driving for another. They couldn’t be sure of the victory until officials measured for a Miami first down in overtime.

The Hurricanes came up short. The Jackets came up big, winning 28-21.

“Yeah, that was fun,” Tech coach Geoff Collins said. “Unbelievable resolve from our guys. The way they played, the way they attacked, the way they stayed in the moment.”

Tech’s young team of mismatched parts went to Miami and beat the Hurricanes on the first try for Collins. His predecessor, Paul Johnson, couldn’t do that in five chances with a team built to run his specialized offense. Most of those Miami teams were better than this one, but the Hurricanes were favored by 18-1/2 points because of the rebuilding state of Tech football.

“I’ve told everybody in the Georgia Tech fan base, I’ve told everybody that would listen that these guys are getting better every single week,” Collins said.

I didn’t see much evidence of it at Duke last weekend. The Jackets gained a season-high 379 yards, but the bulk of them came after they fell behind 38-7. The defense gave up five consecutive scores. The Blue Devils blocked a punt and took it for a TD.

Everything changed for Tech at Miami. The Jackets fashioned an 80-yard TD drive to stay in the game before halftime then scored on their third play of overtime. Tech’s defense scored the first touchdown and shut out Miami after halftime. The special teams scored on a fake punt and blocked a kick.

“That was a complete offense, defense, special-teams victory,” Collins said.

Jordan Mason’s 1-yard run in overtime gave the Jackets their first lead since 7-0. When the Hurricanes got their shot, Carpenter’s tackle in overtime sealed it.

On fourth-and-4 at Tech’s 8-yard line, Miami quarterback N’Kosi Perry passed to tight end Brevin Jordan. Carpenter corralled Jordan near the 5-yard line, but Jordan wiggled free and surged forward. Game officials marked the ball near the 4-yard line, then went to a replay review for the spot.

“I thought that was going to be first-and-goal,” Carpenter said.

Then he saw the replay, which appeared to show Jordan’s arm touched the ground with the ball on the 5-yard line. If Jordan wasn’t down at that point, then it seemed he had made it past the 4-yard line with his second effort. But officials somehow spotted the ball near the 4-yard line.

Carpenter’s stop was the big payoff for what had been a Tech teaser. The Jackets appeared to lead Miami twice in the second half, but didn’t.

In the third quarter Brenton King’s 52-yard field-goal try sailed between the goalposts. It didn’t count. As King lined up to kick, several Miami defenders stood and moved back several yards. The referees ruled that a Tech lineman moved, too. The Jackets punted.

In the fourth quarter Tech’s Jamious Griffin rumbled 31 yards for a score. He shed one defender who pulled his jersey, bowled through some arm tackles and ran down the sideline to the end zone. But a replay review revealed Griffin stepped out of bounds at the 26-yard line. Tech lost a fumble two plays later.

Those plays are reasons why a loss for Tech would have been dispiriting. Yes, the Jackets caught a break when Miami missed two short field-goal tries. But they also stayed in the game when their offense was doing next to nothing and blocked a field-goal attempt near the end of regulation. Tech worked hard for this victory.

The Jackets gained just 42 yards on 12 plays in the first quarter that didn’t involve punter Pressley Harvin throwing the ball. They still had a 14-14 tie.

Miami’s first drive ended with Tech defensive tackle Ja’Quon Griffin falling on the ball in the end zone after freshman Demetrius Knight knocked it free from Perry.

Miami answered with a long touchdown drive. Tech ran three plays and punted it back. A big return set up a 13-yard TD for the Hurricanes. Tech’s next drive stalled at Miami’s 41-yard line and Harvin came out to punt.

Except he didn’t. Harvin’s pass to Nathan Cottrell went 41 yards for the score. It was Tech’s longest scoring play of the season. It forged a tie for Tech, which had gained a total of three yards the first two times it had the ball.

“By far, the best play I’ve ever had in my life,” Harvin said.

After that score, Tech’s defense forced Miami to punt after four plays. The Jackets ran just three plays before punting it back. It could have been worse: Miami nearly dropped Graham for a safety. Another good punt return by Miami set up a 32-yard TD drive for a 21-14 lead.

The Jackets ran just five plays before punting again. The Hurricanes gained a first down at Tech’s 23-yard line. Miami failed to gain another first down when Kaleb Oliver swatted down Perry’s pass to the sticks, then the Hurricanes missed a field-goal try.

The Jackets later avoided what might have been a knockout blow. They had 4:15 until halftime with 80 yards to cover. That seemed to be asking a lot. Tech had ended four of five possessions with a punt. The Jackets had yet to show they can score the old-fashioned way.

They finally did it by grinding out good runs. The drive started with James Graham’s 5-yard pass to Ahmarean Brown. Then Graham handed off four consecutive times, with running back Jerry Howard for gains of 14 and 12 yards. The drive ended with Graham’s sweet 35-yard pas to Brown for a touchdown.

That’s when you knew the Jackets meant business. They handled it all the way to the end. Then they screamed “A-T-L” as they left so everyone would know where they are from.

“We just want to make this city proud,” Collins said. “I think we did that today.”