Not even the highest-scoring offense in Class 6A could put much of a dent in the vaunted Buford defense.

Top-ranked Buford held No. 7 Carrollton to six points - 36 below its season average - and defeated the Trojans 21-6 in the Class 6A semifinals Friday night in Buford. It was the 11th time in 14 games that the Wolves held an opponent to a touchdown or less. Buford (13-1) is allowing just 6.4 points per game, best in 6A and second-best in the state.

The victory put the two-time defending champion Wolves in the state championship game at 7 p.m. Friday at Georgia State’s Center Parc Stadium. Buford, which will appear in the finals for the 13th time in 15 seasons, is seeking its 13th state title since 2001 and 14th overall. The Wolves will face third-ranked Hughes (13-1), which advanced to its first championship game with a 47-28 victory over Dacula.

Buford’s Ashton Daniels threw two touchdowns passes, and Victor Venn ran for 103 yards and a score on 17 carries. The Wolves scored on their first two possessions of the game and were in control the rest of the way.

Carrollton got inside the Buford 20-yard line three times but turned the ball over on downs once, in the fourth quarter, and settled for two field goals by Jacob Russell. The Wolves finished with a 313-224 advantage in total offense.

“We’ve always had the bend don’t break mentality, keep it in front of you, make them make plays all the way through the end zone,” Buford coach Bryant Appling said. “We’ve had a bunch of critical stops the past two weeks, two last week against Lee County and two or three tonight. Our kids are bowing their necks when it gets hard.”

It didn’t help the Trojans’ cause that leading rusher Bryce Hicks left the game early in the first quarter and did not return. He finished with 2 yards rushing on two carries. Last week, Hicks ran for 141 yards and scored four touchdowns in a 37-32 quarterfinal victory over Westlake.

The Trojans struggled to run against Buford without Hicks. Carrollton finished with 52 yards on 30 carries, with Jamun Evans’ 33 yards leading the way.

Buford drove 73 and 53 yards for touchdowns on its first two possessions, getting touchdowns on a 2-yard run by Venn and a 36-yard pass from Daniels to KJ Bolden for a 14-0 lead with 2:40 remaining in the first quarter.

“I’m proud of the way our offense was able to grind out some long drives, and we needed them because we played a lot of plays on defense tonight,” Appling said.

The Wolves got into Carrollton territory on their next two drives, as well, but lost a fumble at the 38 on the first and turned the ball over on downs at the 19 on the next.

Carrollton (12-2) was in Buford territory on three of its four first-half possessions but came away with just three points, a 32-yard field goal by Russell with 18 seconds left in the half. The kick completed a 66-yard, eight play drive that began at the Carrollton 19 with 1:26 to play in the half. Buford had outgained Carrollton 199-54 before that drive.

Carrollton scored again on its first possession of the second half on a 30-yard field goal by Russell and had a chance to creep closer when it forced Buford to punt on its next possession. However, the Trojans lost a fumble at their 31, and Buford scored five plays later on a 7-yard pass from Daniels to Nate Norys to push the lead to 21-6.

Carrollton got deep into Buford territory just one more time but turned the ball over on downs at the Buford 6 with 4:25 remaining. The Wolves were able to run out the clock from there.

Carrollton - 0-3-3-0 - 6

Buford - 14-0-7-0 - 21

First quarter

B - Victor Venn 2 run (Alejandro Mata kick), 9:23

B - KJ Bolden 36 pass from Ashton Daniels (Mata kick), 2:40

Second quarter

C - Jacob Russell 32 field goal, 0:18

Third quarter

C - Russell 30 field goal, 6:40

B - Nate Norys 7 pass from Daniels (Mata kick), 1:54