Norris (4-3) allowed two runs and six hits to snap a personal three-game losing streak and earn his first victory since Aug. 12 at Florida. He had been hit hard since becoming the first rookie in Astros history to win his first three starts.
Jose Valverde pitched a scoreless ninth for his 21st save in 25 chances.
Jimmy Rollins, Ben Francisco and Jayson Werth homered for the Phillies. Cole Hamels (8-9) gave up four runs and eight hits over six innings to lose for the fourth time in seven starts.
The Astros scored three times in the fifth to take a 4-2 lead. Bourn beat out an infield single, stole second and advanced on Kaz Matsui's infield single. After Berkman grounded out, Lee blooped a two-run single to right. Tejada then drove in Lee with a double down the third-base line.
Sammy Gervacio replaced Norris in the seventh and worked a scoreless inning. LaTroy Hawkins allowed Werth's leadoff homer in the eighth before Valverde finished.
Hamels extended his scoreless streak to a career-best 21 innings before the Astros got to him in the third. Bourn singled, stole second and scored on Berkman's one-out bloop single to right for the first run allowed by Hamels since Aug. 21.
Rollins got the Phillies off to a fast start with his 32nd career leadoff homer and Francisco connected in the fourth. It was Francisco's 13th homer and third since he was acquired from Cleveland with Cliff Lee on July 29.
NOTES: Bourn leads the NL with 52 stolen bases. ... The Phillies lead the NL with 94 home runs on the road. ... The Phillies dropped to 51-15 this season when Rollins scores a run. ... Astros manager Cecil Cooper said INF Jeff Keppinger will miss a few days with tightness in his back.