This one, though, was tough.
The Suns beat Milwaukee at home for the 19th time in a row, matching the longest active streak of its kind in the NBA. Denver has lost 19 in a row at Sacramento.
Milwaukee last won in Phoenix on Feb. 21, 1987.
In the final 2:49, Marion made eight consecutive free throws and blocked a driving layup by Redd.
Redd finished with 37 points, giving him 82 in his last two contests. Mo Williams added 31 points and 10 rebounds.
"I thought the second half we played about as hard as we could play and they were still scoring," Suns coach Mike D'Antoni said of the Bucks. "When you have somebody like Michael Redd, he puts a lot of pressure on you. He made some shots that were unbelievable."
Redd made 12 of 20 field goals and 12 of 15 free throws.
"I'm trying to mix my game up," he said. "I'm really trying to attack the rim, get to the free throw line, and it opens up my jump shot. When you've got both of those clicking, it's pretty tough to guard."
Four players had at least 20 points apiece for Phoenix. Steve Nash had 27 points and 11 assists. Amare Stoudemire had 22 points and 11 rebounds before fouling out with 3:09 to play. Leandro Barbosa had 20 points and Raja Bell 18 for the Suns, who have won eight of nine since a 1-5 start.
"We've got lots of guys who can score," Nash said. "We're only going to get better, hopefully, with our chemistry and experience. Offense is not going to be our problem."
Ruben Patterson scored 10 of his 16 in the fourth quarter for Milwaukee but fouled out with 2:49 to go.
"It was a great game," Patterson said. "I don't want to say anything about the officials. I don't want to get fined, but toward the end, things just didn't go our way."
The Suns led most of the second half, but never by more than 10 points.
"I was proud of the way we played," Bucks coach Terry Stotts said. "We hung tight. Some things didn't go our way. You hate to put an effort like that out there and not come away with a win, but we competed hard against a good team on the road. With two minutes to go, anything could have happened."
A pair of emphatic dunks by Stoudemire, one of them on a three-point play, followed by Nash's free throw on a technical foul against Andrew Bogut for tripping, put Phoenix ahead 111-103 with 4½ minutes to go.
The Bucks cut it to 115-112 on two free throws by Ersan Ilyasova with 58 seconds to go, but Marion made four straight free throws to seal the victory.
"I thought in the second half we were better, tougher," Nash said. "We might not have gotten too many more stops, but just the couple that you need."
Milwaukee scored the final four points of the first half and first five of the second to go up 69-62 on Redd's 3-pointer.
The Suns mounted a 15-2 run to take an 80-74 lead on Nash's 18-footer with 6:03 left in the third quarter. Redd's 22-footer cut it to 91-87, but Phoenix scored the final six points of the quarter, capped by Bell's 3-pointer, and led 97-87 entering the fourth.
The Bucks shot 62 percent (28-for-45) and the Suns 54 percent (25-46) in a mostly defenseless first half that ended with Milwaukee up 64-62.
- The Suns last had five players with at least 20 points apiece when they scored 173 points against Denver on Nov. 10, 1990.
- Barbosa scored 10 points in 2:01 after entering the game in the first quarter.
- Ilyasova was born three months after the Bucks' last victory in Phoenix.
- Phoenix is 30-3 at home against Eastern Conference teams since the start of the 2004-05 season.
- The Bucks are 0-14 at US Airways Center, formerly America West Arena.
- Patterson missed three free throws on what would have been three-point plays.