ZAC EFRON was punched in the face in a bizarre incident in the Skid Row area of downtown L.A. over the weekend.  It's a place filled with homeless people, and shady stuff that often involves drugs.

For some reason, Zac and a bodyguard "mysteriously" ended up there after midnight on Saturday night.  Cops spotted them in a fight with at least three other guys, and broke it up.


Zac told them his car ran out of gas, and while he was waiting for a tow truck, he threw a bottle out his car window.  And the homeless people thought he was throwing the bottle at THEM. 


He told police, quote, "It was the hardest I've ever been hit in my life."  But no one was arrested because the cops considered it, quote, "mutual combat."  Another "source" claims Zac was drunk.  There's also no word if the police cared about that.


We're assuming Zac is okay . . . even though he broke his jaw four months ago in another bizarre incident, where he slipped and fell at his house.


Not surprisingly, some people are speculating that he was there to buy DRUGS.  There's been a lot of talk over the past year about his alleged drug problem, and he was reportedly in rehab twice for cocaine abuse.


In any event, the bodyguard tells TMZ that Zac is a HERO.  He says they were downtown to go to a restaurant . . . and were assaulted when they got stranded.


He claims the homeless men came at him with a "SPEAR," and stabbed him in the face, stomach, and chest.  And Zac came to his DEFENSE . . . swinging a vodka bottle as a weapon, and, quote, "saved his life."


TMZ didn't release the bodyguard's name, but they say they looked into it, and found that he has "a criminal record for drugs and violence."  For what it's worth, some sources say this went down just OUTSIDE of Skid Row, which could mean it DIDN'T happen over drugs.