CUMBERLAND — Caleb Normandeau blooped an opposite-field single into left field in the bottom of the ninth inning to lift third-seeded Greely to a 4-3 victory against sixth-ranked Yarmouth in a Western Class B baseball quarterfinal Thursday.

Greely, the defending state champ who didn’t allow a run in playoff competition last spring, advanced to play at second-seeded York in a semifinal Saturday.

Normandeau’s winning hit capped a game that took nearly three hours to complete and included a late rally by the Clippers that forced extra innings.

“As a head coach, that was my 42nd career playoff game, and that was about as emotional a roller coaster as I’ve ever experienced,” Greely Coach Derek Soule said.

The Rangers (12-5) left 12 men on base in the first seven innings as Yarmouth pitchers Luke Klenda, who went the first 52/3 innings, and Andrew Kinsman pitched their way out of jam after jam.

“We had so many opportunities where it seemed like one hit was going to win it and we just couldn’t deliver,” Soule said. “Yarmouth made some great plays. It was a great high school sporting event to be a part of.”

Dylan Fried set up the walk-off win when he slammed a two-out double into the left-field corner. Austin Nowinski and Justin Leeman walked to load the bases before Normandeau, who bats second in the lineup, stepped to the plate.

“I was 0 for 4 coming into that last at-bat, and I just tried to keep my hands inside the ball and drive it the opposite way,” he said. “I just tried to put the ball in play and it ended up working out.”

The Rangers, who cruised to an 11-2 victory against the Clippers on May 6, built an early 3-0 lead.

Greely took the lead in the first when Leeman led off with a single, moved to second on a walk to Normandeau and scored on the first of three singles by Miles Shields.

The Rangers scored twice more in the third. Shields led off with a single, stole second and went to third on a grounder. After Cal Soule walked and stole second, Chaz Reade drove in a run with a single and Matt Pisini doubled in another run.

Will Bryant, who scattered seven hits and struck out 12 in his eight innings for Greely, held the Clippers in check until the fifth.

Yarmouth loaded the bases when Jack Snyder reached after striking out on a wild pitch, and Conor Lainey and Gibby Harnett followed with back-to-back singles. Cody Cook drove in two runs with a two-out single.

The Clippers (8-9) made it 3-3 in the sixth. Jordan Brown led off with a single and moved to third on a throwing error following C.J. Cawley’s bunt. Lainey doubled with one out to bring in the run, but Bryant struck out the next two batters to end the threat.

“The most important thing you get out of high school sports is you learn mental and physical toughness,” Yarmouth Coach Marc Halsted said. “We fought for those two runs in the fifth and we fought for that run in the sixth.

“It stinks to lose, but this is what high school sports should be all about.”

Ryan Twitchell pitched one inning of hitless relief to earn the win.