Starting with the Row Reduction Method
The most reliable way to find the inverse of a matrix by hand is Gauss-Jordan elimination. You set up an augmented matrix with your original matrix on the left and an identity matrix on the right, then perform row operations until the left side becomes the identity. What's left on the right is your inverse. It takes practice but it never fails if your arithmetic is correct. I see people ask this question constantly, and the answers they get are usually either too theoretical or they skip the part where things go wrong. Here's what actually happens when you try this. Take a 3x3 matrix. Write it next to a 3x3 identity matrix. Your goal is to turn the left side into the identity matrix using only three types of row operations: swapping two rows, multiplying a row by a non-zero constant, and adding a multiple of one row to another. When the left side is done, the right side is your inverse.
Let me walk through a concrete example. Say your matrix is: [2 1 1] [1 3 2]
[1 0 0] Augmented with the identity: [2 1 1 | 1 0 0]
Get the Full Details

[1 3 2 | 0 1 0] [1 0 0 | 0 0 1] Start by getting a 1 in the top-left. Swap row 1 and row 3. Now your first row is [1 0 0 | 0 0 1]. That actually makes things easier here. Eliminate below it by subtracting row 1 from row 2, giving you [0 3 2 | 0 1 -1]. Your matrix now looks like:
[1 0 0 | 0 0 1] [0 3 2 | 0 1 -1] [0 1 1 | 0 0 1]
Swap row 2 and row 3 to get a smaller pivot. Multiply the new row 2 by 1/3. Subtract multiples to clear above and below each pivot. After about six or seven operations, the left side becomes identity and the right side gives you the inverse. With this particular matrix, the inverse works out to approximately [-0.2 0.2 1.4], [0.4 -0.2 -0.8], and [-0.3 0.2 1.4]. You can verify by multiplying the original by the result and checking you get identity. The cofactor method is another option, especially for 2x2 matrices where the formula is almost trivial. For a 2x2 matrix [a b; c d], the inverse is one over the determinant times [d -b; -c a]. The determinant has to be non-zero, obviously. For 3x3 and larger, the cofactor approach involves computing nine determinants for a 3x3, which is more arithmetic than Gauss-Jordan and more prone to sign errors. I only use it when I need to show work on paper and the matrix is small enough that the determinant calculation stays manageable.

When It Breaks Down
Not every matrix has an inverse. If the determinant is zero, the matrix is singular and you're done. Gauss-Jordan will reveal this when you hit a row of all zeros on the left side and can't produce a pivot. In practice, this shows up more often than people expect, especially with matrices built from real-world data where columns might be nearly dependent. I ran into this last year with a system of equations where I was modeling heat distribution across a metal plate. The coefficient matrix looked fine on paper, but when I ran the row reduction, the third row collapsed to essentially zero after floating-point arithmetic kicked in. The matrix wasn't exactly singular, but it was close enough that the inverse was numerically unstable. The condition number was around 10^8, which means any small rounding error would blow up the result. What I ended up doing instead was switching to a least-squares solution rather than computing an inverse at all. For ill-conditioned systems, trying to compute the inverse directly is usually the wrong move. Another thing people miss: for large matrices, even well-conditioned ones, manual row reduction is tedious and error-prone. A 10x10 matrix by hand could take thirty to forty-five minutes minimum, and one arithmetic slip invalidates everything. That's why computational tools exist. Python's numpy.linalg.inv, MATLAB's inv function, even Excel's MINVERSE all use optimized algorithms under the hood. They're faster and less error-prone than anything you'd do manually for matrices larger than 4x4.
There's also the special case of symmetric positive-definite matrices, where Cholesky decomposition is more efficient than general inversion. It factors the matrix into L times L transpose, and you can solve systems with it in about half the operations of a general method. If you're doing repeated solves with the same matrix structure, this is worth knowing about. For practical work, I recommend learning the manual method for small matrices so you understand what's happening, then moving to computational tools for anything larger. Always check the determinant or condition number before trusting an inverted result. And if your matrix comes from measured data rather than a theoretical problem, assume it might be near-singular and validate your answer by multiplying back to check for identity.