Phil Gosselin sent another ball rattling off the empty bleacher seats Saturday. He rounded the bases again. And when he returned to the Phillies dugout, teammate Jay Bruce asked if he had hit two home runs in a major-league game before.

“I laughed in his face,” Gosselin said.

What a perfect reaction.

Gosselin has been a professional baseball player for 11 years. He has spent parts of eight seasons in the big leagues -- with six teams. He has a total of nine career home runs. He’s 31 years old, the pride of West Chester and Malvern Prep, and the definition of a journeyman ballplayer.

But in a dreamy ending to the week of his life in which he scarcely made an out, forced his way onto the opening-day roster of his hometown team, and was tapped by manager Joe Girardi as the designated hitter in the season’s second game, Gosselin swatted two home runs to give the Phillies their first win of 2020, 7-1, over the Miami Marlins at Citizens Bank Park.

“This is a big game for us,” Girardi said. “We talk about winning series and now we have an opportunity to do it.”

After a season-opening loss less than 24 hours earlier, starter Zack Wheeler gave the Phillies what they paid for: a shutdown start from a $118 million free-agent arm.

But Gosselin, of all people, gave them what they needed, a tie-breaking two-run homer in the sixth inning, a solo shot in the eighth, and a jolt for an offense that had done almost nothing through the season’s first 15 innings.

In the absence of an explanation, go ahead and laugh.

“It’s been awesome,” Gosselin said. “I was just hoping to make the team out of camp. I knew it was going to be an uphill battle and I’d really have to play well and force their hand a little, and I was able to do that.”

Gosselin did it by getting a pinch hit in each of the Phillies’ three exhibition games last weekend, then going 4-for-4 in an instrasquad game Tuesday night. He got two more hits Wednesday.

Statistics weren’t kept for scrimmages, but Gosselin had nine hits in no more than 10 or 11 at-bats.

He even picked up a nickname from his teammates.

“Barrels. That’s what we call Phil,” said Wheeler, who won his Phillies debut by holding the Marlins to five hits in seven innings and getting four ground-ball double plays. “He’s swinging a hot bat. He was swinging one all spring. That’s all everybody was talking about.”

Including, it turned out, the boss.

“When you look at the two weeks of games that we played in camp, I think it had everything to do with it,” Girardi said. “The way he was swinging the bat. I think someone described it very well the other day in one of our intrasquads, that he was 24 for his last 12. “I think that’s about as descriptive as you can be.

“He’s just swinging the bat great. He made me look really smart today.”

It didn’t seem like things could get much better for Gosselin than the early part of last season. Called up by the Phillies and pressed into action at shortstop with Jean Segura hobbled by a hamstring strain, he stroked a three-run double in a victory at Colorado.

Overall, though, Gosselin played a bit part last season. He had success as a pinch-hitter but got a total of only 65 at-bats. He signed a minor-league contract in the offseason to stay with the Phillies, and when training camp resumed three weeks ago, it appeared that he would be mostly a depth player.

“I haven’t been on the same team back-to-back years in like six years now,” Gosselin said. “So, it’s nice to come back to a spot where I know people and I’m comfortable, so that definitely played into it.

Gosselin made the Phillies’ 30-man opening-day roster, then sat on the bench on opening night. With lefty Caleb Smith starting the second game of the season, Girardi picked righty-hitting Gosselin to replace lefty-swinging Bruce in the DH spot.

Despite drawing six walks in three innings against Smith, the Phillies had only two hits in the game when Gosselin stepped to the plate against lefty reliever Alex Vesia in the sixth inning and ambushed a first-pitch fastball for a two-run homer to left field that opened a 3-1 lead.

After J.T. Realmuto broke the game open with a three-run homer in the seventh, Gosselin went deep again in the eighth, this time to right field against lefty Stephen Tarpley. He finished with three hits and a walk, making him what, 12-for-12 this week?

Not even Gosselin can be sure when he last made an out.

“I don’t [know],” he said. “I’m trying not to think about it.”

Of course not. He doesn’t want to wake up.