Have any spacecraft landed on an asteroid?

Yes, on February 12, 2001 flight controllers landed NASA's NEAR spacecraft on an asteroid called Eros. NEAR was the first spacecraft to orbit and touchdown on the surface of an asteroid. NEAR began orbiting Eros a year earlier, on February 14, 2000. The spacecraft collected close up photographs and measured the size and shape of Eros before landing. Eros is the largest of the asteroids whose orbits cross the orbit of the Earth.