A white van hit pedestrians on London Bridge at about 22:00 BST on Saturday before three men got out and stabbed people in nearby Borough Market.
Seven people died and 48 were injured. The suspects were shot dead by police.
Gareth - who did not want to give his surname - told BBC Wales: "We were fearful for our lives."
He said: "We were at dinner in Borough Market last night and we were just about to leave the restaurant and all of a sudden we heard a bang and people were running down the street and then starting to lock themselves in the restaurant across the street.
Gareth described "a lot of chaos, people scared, not knowing what was going on, glasses dropping, screams" and realised "something bad was about to happen".
With his fiancee, heavily pregnant friend and her partner, he took a lift upstairs and hid in a toilet cubicle, keeping his foot pressed against the door.
"I looked downstairs and a guy had come in with a big knife that looked like a machete," he added.
"We were locked in the bathroom for about an hour. There was screaming outside and smashing glasses.
"We were fearful for our lives. It was a horrendous experience."
While in the toilet, he called his sister Llinos in Cardiff, who described being "absolutely terrified, sick, shaking" and thinking at first it was a joke.
But she called South Wales Police and praised their efforts to keep her calm and giving her advice to pass on to her brother until London officers arrived at the scene.
Political leaders in Wales have expressed shock and concern at the attack.
First Minister Carwyn Jones said: "This was an appalling, cowardly attack on innocent people simply enjoying a summer evening.
"Our thoughts are with the victims and families and I would like to thank the emergency services for their swift and brave response. I am being kept fully informed and I ask all of us to remain vigilant.
"Wales stands with London again and we will not be cowed, we will not change our way of life, or give into fear and let division win."
It is the third terror attack in the UK in three months, following the car and knife attack in Westminster in March, which left five people dead, and the Manchester bombing on 22 May, in which 22 people were killed.
Most parties have suspended national general election campaigning and the prime minister has chaired a meeting of the government's Cobra emergency committee.
Welsh Conservative leader Andrew RT Davies tweeted: "Reports from London are truly horrifying. Speechless at this brutality on our streets."
Plaid Cymru leader Leanne Wood said it was a "another devastating attack", adding that the party "extends its condolences to the people affected and the emergency services that work so hard in these difficult circumstance.
"People deserve to live their lives without fear, and we must come together to reject hate.
Mark Williams, leader of the Welsh Liberal Democrats, tweeted: "My thoughts & prayers are with London this morning. Thank you to our emergency services for all that you do."
UKIP is continuing to campaign.
Its leader in the assembly, Neil Hamilton, said: "Suspending the democratic process after every major incident like this is a form of surrender to the fanatics.
"We must never give in to them. The election campaign must continue."
Meanwhile, South Wales Police said its plans remain "significant" in Cardiff following Saturday's Champions League final as the event's festival is still running until 17:00 BST on Sunday.
A vigil will be held at Castle Gardens in Swansea on Monday to remember the victims of the attack.
A Welsh man caught up in the London terror attack has described how he and his friends had to hide from an attacker in a restaurant toilet.