"As head of state of Venezuela, I have decided to offer humanitarian asylum to the young Snowden ... to protect this young man from the persecution launched by the most powerful empire in the world," Xinhua quoted Maduro as saying.
Maduro was addressing a military parade marking the South American nation's independence day.
He added that Snowden was not guilty because he had exposed a massive US spy programme.
"He has told the truth, in the spirit of rebellion, about the US spying on the whole world," the president said.
Snowden, 30, was charged by the US government with three felonies after he disclosed a highly classified surveillance project code-named PRISM, which can intercept e-mails and phone conversations of millions of people.
He arrived at Moscow's Sheremetyevo international airport June 23 and has since stayed in the transit zone after his US passport was revoked.
Snowden's request for political asylum have been rebuffed by several European nations as well as Brazil and India.
Earlier, Nicaraguan President Daniel Ortega also said his government would be willing to grant political asylum to Snowden "if conditions permit".