
After going undrafted in the 2008 NBA draft, Morrow joined the Golden State Warriors for the 2008 NBA Summer League. On July 24, 2008, he signed with the Warriors.

In his first NBA start, he scored 37 points on 15-for-20 shooting against the Los Angeles Clippers—the most points ever scored in a game by an undrafted player in his rookie season—and grabbed 11 rebounds. Morrow finished the 2008–09 season as the first rookie and first Warrior ever to lead the league in three-point field goal shooting, going 86-for-184 for a .467 percentage.

Morrow re-joined the Warriors for the 2009 NBA Summer League, where he scored 47 points for the Warriors in a game against the New Orleans Hornets – setting the record for the most points scored by an individual in a game at the NBA Summer League.

In the 13th game of the 2009–10 NBA season, Morrow set a new career high with 6 three point makes in a victory over the Dallas Mavericks.

On July 13, 2010, Morrow was traded to the New Jersey Nets for a future second-round draft pick.
At the end of the 2010–11 NBA season, Morrow had the second highest 3-point percentage in history (behind Steve Kerr).
On February 3, 2012, Morrow scored a career high 42 points in a loss to the Minnesota Timberwolves.
On July 11, 2012, the Nets traded Morrow, Johan Petro, Jordan Farmar, Jordan Williams, and DeShawn Stevenson to the Atlanta Hawks for Joe Johnson.
On February 21, 2013, the Atlanta Hawks traded Morrow to the Dallas Mavericks for Dahntay Jones.
On July 18, 2013, Morrow signed with the New Orleans Pelicans.
On July 16, 2014, Morrow signed a three-year, $10 million contract with the Oklahoma City Thunder. On April 1, 2015, he scored a season-high 32 points on 11-of-16 shooting in a loss to the Dallas Mavericks.
On January 4, 2016, Morrow scored a season-high 20 points in a loss to the Sacramento Kings.
On February 23, 2017, Morrow was traded, along with Joffrey Lauvergne and Cameron Payne, to the Chicago Bulls in exchange for Taj Gibson, Doug McDermott and a 2018 second-round draft pick.
On September 18, 2017, Morrow signed with the Portland Trail Blazers.