Justin Bieber has been caught on camera punching a fan in the face during a scary encounter in Spain.