The last time Bartolo Colon pitched against the Braves, most current players were in elementary school. That was 2002, when Colon was a 20-game winner with Cleveland and Montreal. Yes, Montreal.

Twelve years, a few injuries and at least one unconventional stem-cell medical procedure later, the chunky 40-year-old still has plenty in the tank, as the Braves found out Tuesday night when Colon and the Mets spoiled their home opener before an announced sellout of 47,144.

Colon limited the thus-far offensively challenged Braves to six hits in seven innings of a 4-0 Mets win at Turner Field, the fifth time in seven games that the Braves scored two runs or fewer and the second time they’ve been shut out.

Jason Heyward flied out to the center-field warning track with bases loaded to end the game and extend his 0-for-22 slump.

“I knew I just missed it,” said Heyward, who fouled off a full-count fastball from Jose Valverede before hitting a long, towering fly on another 93-mph fastball. “Good (at-bat). I want to be in that spot every time. I like to come through, but no matter how you draw it up it’s not always going to work out.”

The Braves lost their second in a row since a four-game winning streak, and for a moment it looked as if they might also have lost reliever Luis Avilan. The left-hander was diagnosed with a left-hamstring cramp after leaving the game in the seventh inning when he nearly collapsed trying to avoid a flying bat shard on a Daniel Murphy single.

Journeyman Aaron Harang had his second impressive performance in as many starts for the Braves, allowing two hits, one run and four walks with nine strikeouts in six innings. Harang (1-1) has allowed one earned run and four hits in 12 1/3 innings, but the Braves have scored one run in his two games combined.

“A second outing in a row which he gave us a great opportunity to win the game,” Braves manager Fredi Gonzalez said of Harang, who took a no-hitter to the seventh inning of a 1-0 win at Milwaukee in his first start. “He gave up two hits, punched out nine, gave up one run — I don’t think you can ask for much more than that.”

Freddie Freeman hit a two-out double in the first inning, and the Braves didn’t get another runner past first base until the seventh, when they had two on after a two-out Andrelton Simmons single and an error. Johnson flied out to end the first inning, and Heyward grounded out to end the seventh.

The Braves are 1-for-23 with runners in scoring position and two outs for the season, and went 0-for-4 with runners in scoring position in the ninth inning after getting singles by Justin Upton and Dan Uggla to start the inning. Evan Gattis grounded into a force at third, and Simmons reached on an error when Valverde threw wide to second on a fielder’s choice.

With the bases loaded and one out, pinch-hitter Gerald Laird popped out to second, and Heyward flied out five feet in front of the center-field wall to end the game.

“His at-bats are getting better,” Gonzalez said of Heyward, who’s batting .107 (3-for-28). “It’s just a matter of time for him to start getting going. He made a nice throw to cut a runner off at second base so he’s contributing. He’s a guy that doesn’t have to contribute with the bat. He can help you win games defensively or baserunning.”

The Braves have 15 runs and a .263 team on-base percentage through seven games.

“As a team, as a whole, you’re seeing some spurts,” Gonzalez said. “You’re seeing some guys come out and get some good at-bats. You see Justin coming up, giving us a good at-bat. That middle of the lineup is starting to….Freeman has been swinging it since Day 1, but some of the other guys are starting to heat up a little bit.

“Danny (Uggla) had another good couple at-bats, hit the ball hard there in the ninth inning. Now we’ve got to put the whole lineup together and keep the line moving a little bit. There are some signs there.”

The Mets got a run against Harang on two walks and a wild pitch to David Wright in the third inning, the only run that Harang has allowed in two starts.

“I was trying to put him away on a 2-2 count,” Harang said. “I threw a slider in the dirt and took an awkward bounce and got away from him. But other than that I felt good, kept them off-balance. Be just weren’t able to work anything up on Colon tonight.”

The Mets scored two runs in the seventh charged to rookie reliever Gus Schlosser. Travis d’Arnaud led off the inning with a double that landed between outfielders Justin Upton and B.J. Upton — a ball that looked like it could’ve been caught by B.J. if he’d called off his brother and taken it.

“Well, it was up there a long time,” Gonzalez said, stopping short of saying it should have been caught. “That ball was up there a long time. We’ll sit down and look at it, maybe take a little more time tonight and maybe tomorrow afternoon and look at it, see what went wrong.”

Ruben Tejada followed with an RBI single for a 2-0 lead. After a sacrifice bunt, Avilan replaced Schlosser and surrendered another RBI single by Eric Young. Murphy’s broken-bat single then ended Avilan’s night.

The Mets tacked on a run in the eighth with three hits against relievers Ian Thomas and Pedro Beato, making his Braves debut.

Colon threw 18 pitches to the first two batters in the fourth inning, a Chris Johnson flyout and Justin Upton single. But he needed only 17 pitches to get the next seven outs. The Braves went down on three ground outs in a seven-pitch fifth inning.

In his Braves debut Wednesday at Milwaukee, Harang didn’t allow a hit until the seventh inning and had to work with a runner on base once through the first six innings. He pitched 6 2/3 innings in that 1-0 win.

Against the Mets, he gave up a hit on the second pitch of the game, which Young lined up the middle for a single. Harang retired the next six batters before a third-inning leadoff walk by No. 8 hitter Ruben Tejada. Two batters later, Young walked, and the Mets had two on with one out.

Tejada advanced to third on a fly out to deep right, and Young stole second with David Wright batting before Harang bounced a wild pitch past catcher Gattis, allowing Tejada to score. The leadoff walk had come back to haunt him, which leadoff walks have a tendency of doing.

Harang walked the first batter in the next inning, too, but worked around that and a two-out single by d’Arnaud by striking out Tejada looking at a pitch at the bottom of the strike zone to end the inning with two runners on. That was the first of five consecutive strikeouts for Harang.

“Unfortunately we couldn’t get him any run support tonight,” Heyward said. “But he was outstanding. Threw the ball, made them put the ball in play. Made them earn some runs. That’s the name of the game. That’s all you can ask from a starting pitcher, give you an opportunity to win the game. He went above and beyond that tonight.”

The Braves had three hits in the first three innings against Colon, but each hit came with two outs.

In the third inning, slow-starting B.J. Upton drew boisterous applause when he hit a sharp single through the left side with two out. Freeman followed him and blistered a ball to the right side, but the liner went directly to first baseman Lucas Duda.

The Braves finally got a runner on with less than two out in the fourth when Justin Upton hit a one-out single. But Colon retired Uggla and Gattis without difficulty to protect a 1-0 Mets lead.