Smoltz, 40, passed Phil Niekro as the Braves' franchise strikeout leader. He set a season high with 12 strikeouts while giving up five hits, three walks and two runs in eight innings.
Yunel Escobar added a homer as the Braves scored six runs on seven hits — each for extra bases — in the first four innings.
Bob Wickman got Orlando Hudson to ground out with the bases loaded in the ninth to end it.
The Braves ended Arizona's four-game winning streak. The Diamondbacks won the first two games against the Braves and have won 10 of 11 series since the All-Star break.
Smoltz (11-6) earned only his second win since June. His 12 strikeouts are his high since fanning 15 New York Mets batters on April 10, 2005.
Smoltz began the day four behind Niekro's 2,912 strikeouts with the Milwaukee and Atlanta Braves. Smoltz passed Niekro by striking out Mark Reynolds to end the third inning.
He received an ovation as the record was announced, and he tipped his cap to the fans as he entered the dugout.
Smoltz struck out three in the seventh, including Chris Young and Stephen Drew after hitting Miguel Montero with a pitch and walking Jeff Cirillo.
Teixeira hit two-run homers in the first and third innings, giving him seven in 17 games with Atlanta and 20 for the season.
Yusmeiro Petit (2-4) gave up three homers and six runs in 3 2-3 innings. He was recalled from Triple-A Tucson for his ninth start for Arizona.
The Diamondbacks took a 1-0 lead when Young led off the game with a single and scored on Hudson's double to right. Young led off the third with a double and scored from third on a delayed double steal after Hudson, who walked, took off for second base.
Teixeira's second homer tied the game at 2, and the Braves took the lead in the fourth on Escobar's second homer, a triple by Willie Harris and a run-scoring double by Kelly Johnson.
Notes:@ Niekro, who also pitched for the New York Yankees, Cleveland and Toronto, is 10th on the all-time list with 3,342 strikeouts. ... Smoltz struck out 10 or more for the 42nd time in his career. He also struck out 11 against Cincinnati on July 18. ... Teixeira hit two or more homers in a game for the 17th time in his career and the second time this season. He hit two homers for Texas at Houston on May 20.