In what was a microcosm of their disappointing season, Hamels (9-9) tossed a gem, but the Phillies' offense was punchless in a 2-1 loss to the Atlanta Braves that concluded Philadelphia's first last-place season since 2000.
"Cole was outstanding," manager Ryne Sandberg said. "He basically threw a no-hitter at them for seven innings (after the first). We just came up short on the offensive side of things."
It was a common theme for the Phillies, whose offense often was missing — especially in games Hamels started.
The Phillies ace had the fifth-lowest ERA in the National League this season (2.46) and yet he mustered only nine wins in 30 starts.
"It's tough," Hamels said. "That was never the plan. You have to keep putting everything on the backburner and look ahead to your next start and hope things will turn around. Now I have to hope everything will turn around next year."
This time, Hamels wasn't outdueled by another starter, but a cobbled-together mix of Braves relief pitchers.
With starter Alex Wood sidelined because of a forearm injury, the Braves used five bullpen arms to stymie the Phillies.
James Russell, who started for the first time since 2011, went four innings before handing off to Luis Avilan (4-1), who earned the win with two shutout innings. Craig Kimbrel came on to notch his 47th save.
"They gave me a chance, so I thought I might as well show what I could do," Russell said. "I've always had confidence in myself as a starter, and I was happy to get the chance."
The Braves needed their bullpen to come through because Hamels was nearly as stingy.
After allowing the first four Braves batters to reach base, Hamels didn't allow a hit the rest of the way.
Hamels, who remained in the game after getting hit in the mouth by Tommy La Stella's grounder in the second inning, retired 20 consecutive Braves before hitting Joey Terdoslavich with a pitch in the seventh inning.
"What a great pitcher," Braves manager Fredi Gonzalez said of Hamels. "We sniffed a couple of runs off him in the first inning, then he gets hit in the face and almost pitches a complete game."
The Phillies scored their lone run in the eighth inning when Freddy Galvis scored on Ben Revere's double play groundout. Revere got a hit earlier in the game to finish tied with Washington Nationals outfielder Dennard Span for the NL lead with 184 hits.
Not accustomed to rebuilding, both teams face an uncertain offseason. The Braves finished with a losing record (79-83) for the first time since 2008 and the third time since 1991.
"It's fun to end the season in a positive way," Russell said. "It's just a shame we didn't make a better push for the playoffs."
The Braves were in first place in the NL East as late as July 20, but went 25-39 in the final 64 games.
Meanwhile, the Phillies (73-89) finished with an identical record to 2013 and posted consecutive losing seasons for the first time since 1999 and 2000. It was also their first last-place finish in 14 years.
"Last place is a first for me," said Phillies shortstop Jimmy Rollins, who didn't play during the final few weeks of the season due to a hamstring injury. "We started rebuilding this year.
"We need to find ways to score runs with the guys we have, plus one or two guys they go get, and guys that fill out the bench. Rebuilding is something that started this year, and we played like a rebuilding team."
Freeman played every inning of every game this season, the only player in baseball to accomplish that feat. He also set the Atlanta Braves club record for most innings played in a season with 1,449, passing the previous mark of 1447 1/3, set by Andruw Jones in 1999.
Hamels made his 30th start of the season for the Phillies, reaching that benchmark for the seventh consecutive season. He surpassed the 200-inning plateau for the fifth straight year. Both are the best by a Phillies pitcher since Hall-of-Fame lefty Steve Carlton did both for nine consecutive seasons from 1972-80.
Phillies reliever Jake Diekman pitched the final inning in relief of Hamels and struck out Freeman and Evan Gattis to finish with 100 strikeouts for the season. He became the first Phillies reliever to strike out 100 batters since Al Holland had 100 in 1983.
BEEN A LONG TIME:
Bonifacio's home run was just the second leadoff home run of his career. In eight seasons in the majors with eight teams, Bonifacio only went deep to lead off a game once previously — in 2011 against Milwaukee while playing for the Florida Marlins.