This paper addresses the strip packing problem, which has a wide range of real-world applications. Our proposed algorithm is a hybrid metaheuristic that combines an improved heuristic algorithm with a variable neighbourhood search. Different neighbourhoods are constructed based on the concept of block patterns. The proposed algorithm has three interesting features. First, a least-waste strategy is used to improve the constructive heuristics. Second, a better sorting sequence is selected to generate an initial solution. Finally, different neighbourhoods are constructed based on block patterns. The computational results from a diverse set of problem instances show that the proposed algorithm performs better than algorithms reported in the literature for most of the problem sets compared.