ATLANTA (AP) -- Tommy Hanson wasn't fazed by the heat.
Well, except for all the changing.
"I went through three jerseys and three hats," Hanson said. "I was drenched."
He also was a winner, going six strong innings on the sweltering night to lead the Atlanta Braves past San Diego 4-3 Wednesday and prevent the Padres from sweeping the series.
Freddie Freeman drove in two runs, Martin Prado homered and center fielder Jordan Schafer made an outstanding catch for the final out, crashing into the wall but holding on.
"He made a nice play. He kept after it with good speed. No tentativeness," Padres manager Bud Black said. "Once he reached the track he knew what was at stake. He didn't even shy away from the wall and made a hell of a play."
The temperature was 94 degrees at the first pitch and didn't get much cooler.
"It was really hot out there," Hanson (6-4) said. "But this is my third year pitching here. I'm used to it. You know it's going to be hot."
He allowed just three hits, giving up both runs on Kyle Phillips ' homer in the second. Three relievers finished up, with Craig Kimbrel working the ninth for his 16th save in 20 chances - getting a big assist from Schafer.
Kimbrel struck out two before giving up a single. Logan Forsythe followed with a drive to deep right-center that looked as though it might at least bring in the tying run, but Schafer reached up to haul it in before he slammed into wall and tumbled backward.
The Braves snapped San Diego's season-high four-game winning streak, which included a pair of one-runs victories over Atlanta to start the series. The Padres couldn't finish off their first three-game sweep at Turner Field since the park opened in 1997.
"That was a good way to finish it after the last couple of nights," said Braves manager Fredi Gonzalez, shaking his head after the team's fifth straight one-run game.
Clayton Richard (2-6) took the loss. He had baserunners all over the place, allowing eight hits and walking four in 4 2-3 innings. Finally, with two more Braves aboard, Pat Neshek came on to retire Joe Mather on a grounder.
"Too many pitches were just elevated," Richard said, "and they took advantage of them."
Neshek gave up Prado's homer in the sixth, which turned out to be the decisive run. The Braves outfielder spent some extra time in the cage after going 0 for 4 in Tuesday's loss.
It paid off.
"I couldn't go home like that," Prado said. "When I don't feel good, I go in there and try to fix it. Today, I felt a lot better. I got a couple of pitches to hit and I put the ball in play."
Dan Uggla got an unexpected day off Tuesday, the Braves hoping that would help their struggling second baseman break out of his season-long slump. He returned to the lineup batting seventh, the lowest he's been all season.
Neither the rest nor the new spot seemed to help. Uggla went 0 for 4, popping out in the first with the bases loaded and watching his average sink to .175.
The Braves jumped on Richard right away. With one out in the first, Prado doubled to left-center and Chipper Jones reached on an infield hit, throwing a scare into Atlanta fans when he tumbled over first baseman Brad Hawpe , who was pulled off the bag by the throw.
Jones, already playing with a sore muscle in his left leg and a torn meniscus in his right knee, got up slowly but was OK - much to the relief of the Braves, who already have a patched-together lineup with Jason Heyward and Nate McLouth on the disabled list. In fact, Jones talked his way into the lineup, not wanting to weaken the offense even more to nurse his various ailments.
After the 39-year-old pulled himself together after the fall, Brian McCann singled to left to make it 1-0. Freeman followed with another run-scoring single to center, and Alex Gonzalez made it five straight hits off Richard to load the bases with one out.
That would've been an opportune time for Uggla to break out of his slump, but he popped out to second base on the very first pitch. Richard escaped the jam by getting Mather on a called third strike.
The Padres tied it up in the second. After Hawpe led off with a single, Phillips connected with his second career homer, a one-out drive that barely cleared the wall in right. His first homer came Monday night, a solo shot in the 10th that gave San Diego a 3-2 win.
Hanson was pretty much untouchable after that. He retired 14 of the last 16 hitters he faced, the only baserunners coming on a pair of walks. The right-hander struck out four.
The Braves gave Hanson the run he needed for the win in the third when McCann doubled and Freeman drove him in with another two-bagger, a checked swing that wound up staying fair just inside the third-base bag.
Prado gave Hanson a cushion in the sixth, restoring the two-run lead by driving an 0-2 pitch from Neshek over the wall in left with two outs. It was Prado's team-leading eighth homer of the season.
Pinch-hitter Jorge Cantu brought San Diego within a run, hitting a sacrifice fly off Eric O'Flaherty in the seventh. But Jonny Venters struck out the side in the eighth, and Kimbrel finished up to tie the mark for the most saves by an NL rookie before the All-Star break.
He matched Yhency Brazoban of the Dodgers in 2005 and still has plenty of time to eclipse him.
NOTES: Schafer beat out an infield single in the second and has reached base in eighth straight games since being called up from Triple-A to replace McLouth. ... Padres OF Aaron Cunningham struck out as a pinch-hitter to end the seventh after being summoned from the minors before the game to replace Cameron Maybin , who went on the DL with a sore right knee.