Steven Souza went 3-for-3 with two homers, a triple, three RBIs and two runs scored vs. the Astros on Sunday. (AP)

KISSIMMEE, Fla. -- Gio Gonzalez allowed three hits and one run in 4 2/3 innings, and Steven Souza Jr. hit a pair of solo home runs and added an RBI triple to lead the Nationals to a 4-3 win over the Astros on Sunday afternoon at Osceola County Stadium.

Gonzalez retired 12 of the first 13 batters he faced before Matt Dominguez doubled with one out in the fifth inning and scored on an L.J. Hoes single. He walked one batter and struck out four while throwing 68 pitches (40 strikes).

"I mixed in all my pitches, got my changeup in counts I wanted to throw it," Gonzalez said. "I got over [to cover first], which is something I wanted to work on this spring. I got over a couple of times, which was nice to see to finally beat a runner to first. All in all, some good, positive feedback, and guys looked like they were having fun."

Souza homered to left field with one out in the second inning and repeated the feat two innings later when he got a Scott Feldman pitch into the air and watched it sail over the fence with the help of a brisk wind. That gave the Nats a 2-0 lead.

Souza's RBI triple in the seventh off Brad Peacock put Washington ahead, 4-2, and the Astros got the run back in the bottom of the inning on an RBI double by Jon Singleton, which scored top prospect Carlos Correa.

Feldman, the Astros' likely Opening Day starter, worked four-plus innings and gave up eight hits and three runs while striking out five batters. He threw 82 pitches.

"I'm still working on things and trying to get that command going to where I know where the ball is going a little better," Feldman said. "I made some mistakes and they hit some fly balls, especially out here in Spring Training, they're going to go a long ways."

Up next: The Nationals travel to Lakeland, Fla., on Monday to play the Tigers for the third time in four days at 1:05 p.m. ET on Gameday Audio. Right-hander Tanner Roark will get the start for Washington. In his last start, Roark allowed three runs in 3 1/3 innings against the Astros.