The move puts him at odds with top scientists and most Americans, including some in his own Republican Party.
Bush said: “It crosses a moral boundary that our decent society needs to respect so I vetoed it.
“As science brings us ever closer to unlocking the secrets of human biology, it also offers temptations to manipulate human life and violate human dignity.
“Our conscience and history as a nation demand that we resist this temptation.”
The veto came a day after the Senate defied Bush and approved the legislation, 63-37, four votes short of the two-thirds margin needed to override the veto.
The House of Representatives failed to override his veto.
The research would have used embryos, some consisting of just a handful of cells, left over from in vitro fertilization procedures.
Democrats sharply criticised the veto and vowed to keep pressing the issue.
Edward Kennedy, a Massachusetts Democrat senator, said: “As long as restrictions based on a narrow ideology block progress to new cures, this issue will never be closed.
“Mr President, you can veto a bill, but you can’t veto hope.”
The veto fulfills a Bush promise made to socially conservative supporters whose votes his Republican Party will need in November to help keep control of the Senate and House.
It was Bush’s first veto since taking office more than five years ago.