The Republican-led Congress sent the bill to the president on Tuesday.
White House spokesman Josh Earnest said Obama vetoed the bill "without any drama or fanfare or delay".
The 875-mile (1,400km) pipeline would carry tar sands oil from Alberta, Canada, to the US state of Nebraska where it joins pipes running to Texas.
The project has pitted Republicans and other supporters, who say it will create much needed jobs, against many Democrats and environmentalists, who warn the pipeline will add to carbon emissions and contribute to global warming.
The Keystone bill is Mr Obama's third veto as president and his first since Republicans won full control of Congress in November.
More vetoes are expected in the coming months as Republicans in Congress craft legislation to reverse Mr Obama's action on health care, immigration and financial regulation.
The Keystone XL pipeline project was first proposed more than six years ago, but has languished, awaiting a permit required by the federal government because it would cross an international boundary.
The White House has said the bill passed by Congress interfered with the normal permitting process.
Without a veto-busting majority in Congress, Republicans are considering inserting Keystone into other critical legislation dealing with energy, spending or infrastructure in the hope that Obama would be less likely to veto those priorities.
US President Barack Obama has vetoed a bill that would have approved construction of the Keystone XL oil pipeline.