A simple way to reduce the number of erroneous matches is to tweak matching parameters, including trying different matching strategies. If you are using a simple distance threshold to determine what is a match, you can tighten that. Alternatively, you can use the ratio test (used in David Lowe's demo SIFT implementation) to eliminate ambiguous matches. There you can tightened both the distance threshold and the ratio threshold.
Unfortunately, the world is not perfect, so even if you tweak every parameter, you will still have some false matches. Then you need to use additional information and/or make additional assumptions about your problem. For example, you can assume that the images are related by a rigid transformation (e. g. affine). You can estimate the parameters of this transformation from your matches using an algorithm like RANSAC. Then you can reject the matches that do not fit this transformation as erroneous.
Here is an example of removing erroneous matches by assuming a similarity transformation, using the Computer Vision System Toolbox for MATLAB.