Montgomerie's six-under-par round gave him a 13-under total of 275 to leave him five strokes behind Calcavecchia, who stormed to a 65 yesterday, and two adrift of Singh, who shot 67.
Montgomerie, fourth in the event last year, said: "I do enjoy playing over here. It proves I save my best golf for the States, but I just seem to come up short. But it's only my second week here and I'm looking forward to the rest of my stay."
Calcavecchia, a former Open champion who also won this tournament in 1987, led Singh by one shot going into the final round and was always in control as he completed an 18-under-par total of 270.
Sharing fourth place were John Daly, who shot a best-of-the-day 64, Jeff Maggert, 65, and defending champion Stuart Appleby, of Australia, 67.
Stephen Leaney, the 29-year-old Australian, won the Moroccan Open by eight shots from Sweden's Robert Karlsson in Agadir yesterday.
Leaney shot a final round 67 for a 72-hole aggregate of 271, 17 under par, and was the only man in the field to break 70 in all four rounds. It was the biggest win on the European Tour since Nick Price won the Dimension Data Pro-Am by eight shots from David Frost in Sun City, South Africa, in February last year.
Leaney did not put a foot wrong until he arrived at the par-five 15th hole where he lost a ball off the tee, but holed a 12-foot putt to drop only one shot. It was his only bogey of a round which included six birdies. "I was so far ahead at the 15th that I fell asleep," he said.
Karlsson shot 71 for 279. His fellow Swede Mathias Gronberg was third on 282.
Ricardo Gonzalez kept the Kenya Open title in Argentinian hands when he beat the local hero Jacob Okello at the third hole of a sudden death play-off in Nairobi yesterday.
Gonzalez and Okello had compiled closing rounds of 69 to finish on 12- under-par 272, three ahead of Mark Litton, of Wales, and England's Warren Bennett.
Both had pars at the first extra hole, the short 13th, and had birdie fours at the 18th. But back at the 150-yard 13th, Gonzalez sealed victory with a par to Okello's bogey after both missed the green.