The authors consider singularly perturbed convection-diffusion problems of the form - &egr;δu + v∇u + cu = f, x ∈ &OHgr; ⊂ Rd, subject to boundary conditions u = g1, x ∈ &Ggr;1, u &dundot; ∇u = g2, x ∈ &Ggr;2 = ∂<&OHgr; \ &Ggr;1. A difference method is presented which, under suitable conditions, has a discretization error of order p uniformly in the perturbation parameter &egr;. The method is based on a defect-correction technique and uses special, adaptively graded and patched meshes. In the case p = 2, the mesh sizes vary between the mesh size h in the part of the domain where the solution is smooth and the final mesh size &egr;3&slash;2 h in the boundary layer. Similar constructions hold for interior layers. The correction operator is a monotone operator that allows for an optimal error estimate in terms of the maximum norm. For a d-dimensional problem, 1 ≤ d ≤ 3, the number of meshpoints is O ( h - d + h - d O ( &egr; - s ) ), where s = 1 &slash; p for boundary layers and s = 1 &slash; ( 2 p ) for interior layers.