The 12-deck Costa Deliziosa, which is nearly 300 metres (1,000 feet) long and carries more than 3,800 passengers and crew, was being towed out in stormy conditions when the near-miss happened.
A video posted by a Venetian writer and artist, Roberto Ferrucci, on his website www.robertoferrucci.com showed the massive cruise ship passing very close to a moored yacht.
The crew of the 50-metre yacht rushed from their ship to the quayside as the cruise ship brushed by, the AGI news agency reported. The incident happened not far from the famous Saint Mark's Square.
The lead tug managed to pull the cruise ship away from yacht and lead it safely out of the lagoon.
But the near-miss comes only weeks after a June 2 incident in which when another cruise ship, the 13-deck MSC Opera, scraped the dockside and knocked a small tourist boat, injuring four people.
That accident reignited a long-running row over the damage caused to the city and its fragile ecosystem by cruise ships that sail exceptionally close to the shore.
Critics say the waves the ships create are eroding the foundations of the lagoon city, which regularly floods, leaving sites such as Saint Mark's Square underwater.
The port city, with its famous lagoons and canals, enjoys UNESCO World Heritage site status.
Two years ago the government announced that larger ships would be diverted away from the historic centre -- but failed to follow through on the pledge.
The plan called for cruise ships to no longer use the Giudecca Canal south of the city and passing by St Mark's Square thanks to the construction of a new ship terminal.
"I have already ordered an inspection by my ministry to check what happened in Venice," Transport and Infrastructure Minister Danilo Toninelli wrote on Facebook on Monday.
"The third tug we imposed was decisive to avoid an accident, but it's not enough. After 15 years of nothing, we are close to a solution to eliminate big boats from St Mark's. And we will do so while protecting security, the environment, tourism and jobs," he promised.
The opposition ripped into Toninelli as the "minister of disasters who has paralysed one of the most strategic ministries for the country's growth," the centre-left Democratic Party's Roberto Morassut said.
Venice Mayor Luigi Brugnaro, a right-wing independent, said "the main responsibility for what happened yesterday and for what could happen in the future is for who hasn't decided anything over the last few months."
"I'm talking about Transport Minister Danilo Toninelli," Brugnaro said in a statement.
"The time for waiting is over. We're very angry. Enough of boats on St Mark's and in the Giudecca Canal. Minister Toninelli should come here as soon as possible to tell citizens' institutions about the results from the umpteenth check he ordered. Dear minister, how much longer do we have to wait?"
While gondoliers in striped T-shirts and woven straw hats row tourists around the narrow canals, the smoking stacks of mammoth ships loom into sight behind the city's picturesque bell towers and bridges.
"Cruise ships must not sail down the Giudecca," Italy's Environment Minister Sergio Costa tweeted after last month's incident. "We have been working on moving them for months now... and are nearing a solution." .
WWF Italy described June's incident as "an important alarm bell to which it would be madness not to listen".
In 2013, the authorities banned ships weighing more than 96,000 tonnes from the Giudecca Canal.
The ban was in part a response to the deadly 2012 Costa Concordia disaster, in which the 115,000-ton cruise ship crashed into Giglio island off Tuscany after its captain sailed too close to the shore.
But the law was later overturned by a regional court, which ruled that safety or environmental risks had not been proven.