Bobby Beattie, 32, popped the question to 27-year-old Laura Meikle at Braehead shopping centre near Glasgow following months of planning.
Mr Beattie hired a troupe of dancers to perform a routine to the Bruno Mars song Marry You before getting down on one knee.
His stunned girlfriend of nine years had gone to Braehead with her mother on the pretext of buying a new Christmas outfit.
Ms Meikle, from Bridgeton in Glasgow, said: "When I first heard the music and saw the dancers start their routine I thought it was some entertainment for the shoppers.
"I recognised the song Marry You and saw someone walking through the dancers holding some balloons. At that point I thought someone is going to get a proposal, but never for a minute thinking it was me.
"Then the next thing I see Bobby standing in front of me, pulling me into the centre of the mall, and going down on one knee."
She added: "I never thought Bobby would do something like this. It's certainly a day I'm never going to forget."
Mr Beattie, who has a one-year-old daughter, Hayden, with his partner, said: "I got the idea of using a flashmob to propose to Laura after I saw a video of something similar that happened in America.
"I was very nervous to make sure I would be able to pull the whole thing off as I've been planning this since May.
"I haven't slept for three days and my stomach was in knots waiting for the flashmob dancers to start their routine.
"I always said that if I was ever going to propose I would do it in a big way."